文字列をに変換するにはどうすればよいLocalDate
ですか?
私は次のような例を見てきました:
LocalDate dt = new LocalDate("2005-11-12");
しかし、私の文字列は次のようなものです:
2005-nov-12
文字列をに変換するにはどうすればよいLocalDate
ですか?
私は次のような例を見てきました:
LocalDate dt = new LocalDate("2005-11-12");
しかし、私の文字列は次のようなものです:
2005-nov-12
回答:
Joda Timeを使用するときは、以下を使用する必要がありますDateTimeFormatter
。
final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
final LocalDate dt = dtf.parseLocalDate(yourinput);
Java 8以降を使用している場合は、hertziの回答を参照してください
Java 1.8以降では、java.timeクラスを使用することにより、追加のライブラリなしでこれを実現できます。チュートリアルを参照してください。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
formatter = formatter.withLocale( putAppropriateLocaleHere ); // Locale specifies human language for translating, and cultural norms for lowercase/uppercase and abbreviations and such. Example: Locale.US or Locale.CANADA_FRENCH
LocalDate date = LocalDate.parse("2005-nov-12", formatter);
構文はほぼ同じですが。
日時の書式設定はによって実行されますorg.joda.time.format.DateTimeFormatter class
。3つのクラスがフォーマッタを作成するためのファクトリメソッドを提供します。これは1つです。その他はISODateTimeFormat
とDateTimeFormatterBuilder
です。
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MMM-dd");
LocalDate lDate = new LocalDate().parse("2005-nov-12",format);
final org.joda.time.LocalDate class
タイムゾーンなしの日付を表す不変の日時クラスです。LocalDate
あるスレッドセーフで不変という、提供年表は同様です。提供されているすべての標準の年表クラスは、スレッドセーフで不変です。
DateTimeFormatter
には、文字シーケンスを解析するために直接使用できる組み込みのフォーマットがあります。これは大文字と小文字が区別されるため、11月は機能しますが、11月は機能しません。NOVは機能しません。
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
try {
LocalDate datetime = LocalDate.parse(oldDate, pattern);
System.out.println(datetime);
} catch (DateTimeParseException e) {
// DateTimeParseException - Text '2019-nov-12' could not be parsed at index 5
// Exception handling message/mechanism/logging as per company standard
}
DateTimeFormatterBuilder
フォーマッターを作成するカスタム方法を提供します。大文字と小文字が区別されないため、11月、11月、11月、11月は同じように扱われます。
DateTimeFormatter f = new DateTimeFormatterBuilder().parseCaseInsensitive()
.append(DateTimeFormatter.ofPattern("yyyy-MMM-dd")).toFormatter();
try {
LocalDate datetime = LocalDate.parse(oldDate, f);
System.out.println(datetime); // 2019-11-12
} catch (DateTimeParseException e) {
// Exception handling message/mechanism/logging as per company standard
}