現在、この作業を行うためのより現代的な方法があります。
java.time
java.timeフレームワークは、Java 8 以降にバンドルされています。チュートリアルを参照してください。これらの新しいクラスは、 JSR 310で定義された Joda- Timeに触発され、 ThreeTen-Extraプロジェクトによって拡張されています。これらは、厄介で紛らわしい古いクラスである java.util.Date/.Calendar などを大幅に改善したものです。
デート限定クラス
新しいフレームワークは、LocalDate
時間帯やタイム ゾーンのない日付のみを表すクラスを提供します。
ところで、年に 2 桁を使用すると問題が発生します。可能な限り 4 桁の年を使用することを強くお勧めします。java.time フレームワークは、任意の 2 桁の年が20xx
2000 年から 2099 年までの世紀にあると想定します。
文字列を解析するには、予期される形式を指定します。標準のISO 8601形式を使用していないため、形式パターンを定義する必要があります。name-of-month に期待される言語を含む Locale を指定します。
// Parse String representation.
String input = "23-May-12";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "d-MMMM-yy" , Locale.ENGLISH ); // Using four "M" characters means we expect the full name of the month.
LocalDate localDate = formatter.parse ( input , LocalDate :: from );
逆に、日付値の文字列表現を生成するには、同じフォーマッタを再利用できます。
// Generate String representation.
String output = localDate.format ( formatter );
コンソールにダンプします。
System.out.println ( "input: " + input + " → localDate : " + localDate );
System.out.println ( "localDate : " + localDate + " → output: " + output );
走るとき。
入力: 23-May-12 → localDate: 2012-05-23
localDate : 2012-05-23 → 出力: 23-May-12