またはオブジェクトString
を作成する必要がある日付の表現があります。私はAPIを調べましたが、独自の醜い解析メソッドを作成する以外にこれを行うことができるものは見つかりませんでした. 方法があるに違いないことはわかっていますが、解決策を知っている人はいますか?Date
Calendar
Date
Calendar
5 に答える
簡単に言えば:
DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
try {
Date date = formatter.parse("01/29/02");
} catch (ParseException e) {
e.printStackTrace();
}
詳細については、 SimpleDateFormat
javadocを参照してください。
に変換するには、次のCalendar
ようにします。
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
tl;dr
LocalDate.parse( "2015-01-02" )
java.time
Java 8以降には、これらの他の回答を時代遅れにする新しいjava.timeフレームワークがあります。このフレームワークは、 JSR 310で定義された Joda- Timeに触発され、 ThreeTen-Extraプロジェクトによって拡張されています。チュートリアルを参照してください。
古いバンドル クラスである java.util.Date/.Calendar は、厄介で混乱を招くことで有名です。それらを避けてください。
LocalDate
Joda-Time と同様に、java.time には、時刻LocalDate
やタイム ゾーンのない日付のみの値を表すクラスがあります。
ISO8601
入力文字列が の標準ISO 8601形式でyyyy-MM-dd
ある場合、フォーマッタを指定する必要なく、そのクラスに文字列を直接解析するように要求できます。
java.time では、日時値の文字列表現の解析と生成の両方に、デフォルトで ISO 8601 形式が使用されます。
LocalDate localDate = LocalDate.parse( "2015-01-02" );
フォーマッタ
別の形式の場合は、java.time.formatパッケージからフォーマッターを指定します。独自の書式設定パターンを指定するか、java.time を自動的にローカライズしてLocale
、翻訳用の人間の言語を指定したり、ピリオドとコンマなどの問題を決定するための文化的規範を指定したりできます。
フォーマットパターン
フォーマット パターンで使用されるコードの詳細については、DateTimeFormatter
クラスのドキュメントを参照してください。java.text.SimpleDateFormat
古い時代遅れのクラス パターンとは少し異なります。
parse
メソッドの 2 番目の引数がメソッド参照であることに注意してください。これは、Java 8 以降に追加された構文です。
String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "MMMM d, yyyy" , Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );
コンソールにダンプします。
System.out.println ( "localDate: " + localDate );
localDate: 2015-01-02
自動ローカライズ
または、書式設定パターンを指定するのではなく、java.time をローカライズします。を呼び出し、実行時にいつでも変更される可能性がある JVM の現在のデフォルトに依存するのではなくDateTimeFormatter.ofLocalizedDate
、必要な/期待される値を指定してください (!)。Locale
String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate ( FormatStyle.LONG );
formatter = formatter.withLocale ( Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );
コンソールにダンプします。
System.out.println ( "input: " + input + " | localDate: " + localDate );
入力: 2015 年 1 月 2 日 | localDate: 2015-01-02
高く評価されているJoda Time ライブラリも一見の価値があります。これは、Java 7 用に作成された新しい日付と時刻の APIの基礎です。デザインはすっきりしていて直感的で、よく文書化java.util.Date
されており、元の/java.util.Calendar
クラス の多くの不器用さを回避しています。
JodaDateFormatter
は String を Joda に解析できますDateTime
。
これを試して:
DateFormat.parse(String)
DateFormat
クラスにはparse
メソッドがあります。
詳細については、 DateFormatを参照してください。