Java 8を使用して特定の形式に文字列を日付に変換しようとしています。以下は私のコードです。形式パターンをMM/dd/yyyyと記述した後でも、受け取る出力はyyyyです。/DD/MM形式:誰かが私が間違っていることを指摘できますか?
String str = "01/01/2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
LocalDate dateTime = LocalDate.parse(str, formatter);
System.out.println(dateTime);
これは、 toString method を使用しているためです。
出力は、ISO-8601形式のuuuu-MM-ddになります。
LocalDate.parse
に渡したDateTimeFormatter
は、LocalDate
を作成するためだけに使用されますが、作成されたインスタンスに「アタッチ」されません。次のように LocalDate.format
method を使用する必要があります。
String str = "01/01/2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
LocalDate dateTime = LocalDate.parse(str, formatter);
System.out.println(dateTime.format(formatter)); // not using toString
LocalDateは日付オブジェクトです。これはStringオブジェクトではないため、日付出力文字列を表示する形式はtoStringの実装に依存します。
LocalDateオブジェクトに正しく変換しましたが、特定の文字列形式で日付オブジェクトを表示したい場合は、それに応じてフォーマットする必要があります。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
System.out.println(dateTime.format(formatter))
このように、フォーマッタを提供することにより、日付を任意の文字列形式に変換できます。
そのために SimpleDateFormat クラスを使用できます。初期化 SimpleDateFormat パラメーターとして使用する日付形式のオブジェクト。
String dateInString = "27/02/2016"
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse(dateInString);