日付文字列を日付またはカレンダーオブジェクトに変換するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/43802

  •  09-06-2019
  •  | 
  •  

質問

私は持っています 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 詳細については。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top