web-dev-qa-db-ja.com

Java8を使用して文字列を日付に変換する

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);
10
user3509208

これは、 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
7
marcospereira

LocalDateは日付オブジェクトです。これはStringオブジェクトではないため、日付出力文字列を表示する形式はtoStringの実装に依存します。

LocalDateオブジェクトに正しく変換しましたが、特定の文字列形式で日付オブジェクトを表示したい場合は、それに応じてフォーマットする必要があります。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
System.out.println(dateTime.format(formatter))

このように、フォーマッタを提供することにより、日付を任意の文字列形式に変換できます。

2
Ankit Bansal

そのために SimpleDateFormat クラスを使用できます。初期化 SimpleDateFormat パラメーターとして使用する日付形式のオブジェクト。

String dateInString = "27/02/2016"
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse(dateInString);
2
Zoka