LoginSignup
11
9

More than 5 years have passed since last update.

Javaで文字列からLocalDate型に変換してみた

Posted at

JavaでString型の日付からLocalDate型に変換する方法の一例です。
今回調べた経緯は、Java Persistence API(JPA)を使用したAPIを実装中に、
String型で格納したyyyyMMddの形式の文字列をLocalDate型に変換する必要があったためです。

前提

本投稿ではJavaのバージョンは8を使用しています。
紹介する内容はあくまでも一例なので、あしからず。

文字列 "yyyyMMdd" → LocalDate型への変換

とりあえず、下記のメソッドを作る

Sample.java
// 文字列の日付をフォーマット(yyyyMMddやyyyy/mm/ddなど)をもとにLocalDate型に変換するメソッド
public static LocalDate convertToLocalDate(String date,String format) {

                // シンプルにLocalDate型に変換された日付を返却
        return LocalDate.parse(date, DateTimeFormatter.ofPattern(format));

    }

結果を確認するため出力する

Sample.java
public class Sample {

    public static void main (String args[]) {

        System.out.println(convertToLocalDate("19990707", "yyyyMMdd"));

    }

出力結果はこのような感じになる

結果
1999-07-07

クラスDateTimeFormatterには事前定義されたフォーマッタがあるらしく、
そちらを使った例がこちら

Sample2.java
// 引数を文字列dateとDateTimeFormatterクラスのインスタンスに変更
public static LocalDate convertStringToLocalDate(String date,DateTimeFormatter formatter) {

        return LocalDate.parse(date,formatter);

    }

今回使うフォーマッタはこれ → BASIC_ISO_DATE ("基本的なISO日付"との説明がoracleのページにありました)
要は、BASIC_ISO_DATEが実現できるのは"yyyymmdd"の形式のフォーマッタを担うことらしい。

Sample2.java
public class Sample2 {

    public static void main (String args[]) {

        System.out.println(convertStringToLocalDate("18980401", DateTimeFormatter.BASIC_ISO_DATE));

    }

結果はSample.javaと同じになる

結果
1898-04-01
その他

初投稿なので投稿自体が不慣れですが、根気よく続けていきたいと思います。
アドバイス、御指摘など大歓迎です

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9