日付文字列を日付またはカレンダーオブジェクトに変換するにはどうすればよいですか?
質問
私は持っています String
作成する必要がある日付の表現 Date
または Calendar
からのオブジェクト。調べてみました Date
そして Calendar
API はありますが、独自の醜い解析メソッドを作成する以外にこれを実行できるものは見つかりませんでした。何か方法があるはずですが、解決策を知っている人はいますか?
解決
簡単に言うと:
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);
他のヒント
先生
LocalDate.parse( "2015-01-02" )
java.time
Java 8 以降には新しい機能があります。 java.time これらの他の答えを時代遅れにするフレームワーク。このフレームワークは以下からインスピレーションを受けています ジョーダタイム, 、 によって定義されます JSR 310, 、によって拡張されます ThreeTen-Extra プロジェクト。を参照してください。 チュートリアル.
古いバンドル クラスである java.util.Date/.Calendar は、面倒でわかりにくいことで知られています。それらを避けてください。
LocalDate
Joda-Time と同様に、java.time にはクラスがあります。 LocalDate
時刻やタイムゾーンを含まない日付のみの値を表します。
ISO8601
入力文字列が標準の場合 ISO8601 の形式 yyyy-MM-dd
, を使用すると、フォーマッタを指定せずに、そのクラスに文字列を直接解析するように依頼できます。
ISO 8601 形式は、日時値の文字列表現の解析と生成の両方に、java.time でデフォルトで使用されます。
LocalDate localDate = LocalDate.parse( "2015-01-02" );
フォーマッタ
別の形式がある場合は、 java.time.format パッケージ。独自の書式パターンを指定することも、java.time を適切な形式に自動的にローカライズさせることもできます。 Locale
翻訳には人間の言語を指定し、ピリオドとコンマなどの問題を決定するための文化的規範を指定します。
フォーマットパターン
読む DateTimeFormatter
フォーマットパターンで使用されるコードの詳細については、クラスドキュメントを参照してください。彼らは古い時代遅れのものとは少し異なります java.text.SimpleDateFormat
クラスのパターン。
の 2 番目の引数がどのように変化するかに注意してください。 parse
方法は メソッドリファレンス, 、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 );
現地の日付:2015-01-02
自動的にローカライズ
または、書式設定パターンを指定するのではなく、java.time にローカライズしてもらいます。電話 DateTimeFormatter.ofLocalizedDate
, 、希望する/期待されるものを必ず指定してください Locale
実行中いつでも変更される可能性がある JVM の現在のデフォルトに依存するのではなく (!)、
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 タイム ライブラリ も一見の価値があります。これが新しいものの基礎となる 日時API これは Java 7 用に追加されています。デザインがすっきりしていて直感的で、 よく文書化されている オリジナルの不器用さの多くを回避します java.util.Date
/ java.util.Calendar
クラス。
ジョーダさんの DateFormatter
文字列を Joda に解析できます DateTime
.
これを試して:
DateFormat.parse(String)
の DateFormat
クラスには parse
方法。
見る http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html 詳細については。