63

またはオブジェクトStringを作成する必要がある日付の表現があります。私はAPIを調べましたが、独自の醜い解析メソッドを作成する以外にこれを行うことができるものは見つかりませんでした. 方法があるに違いないことはわかっていますが、解決策を知っている人はいますか?DateCalendarDateCalendar

4

5 に答える 5

126

簡単に言えば:

DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
try {
  Date date = formatter.parse("01/29/02");
} catch (ParseException e) {
  e.printStackTrace();
}

詳細については、 SimpleDateFormatjavadocを参照してください。

に変換するには、次のCalendarようにします。

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
于 2008-09-04T13:56:37.320 に答える
15

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

于 2015-10-29T03:29:57.173 に答える
9

高く評価されているJoda Time ライブラリも一見の価値があります。これは、Java 7 用に作成された新しい日付と時刻の APIの基礎です。デザインはすっきりしていて直感的で、よく文書化java.util.Dateされており、元の/java.util.Calendarクラス の多くの不器用さを回避しています。

JodaDateFormatterは String を Joda に解析できますDateTime

于 2008-09-04T15:28:11.483 に答える
0

これを試して:

DateFormat.parse(String)
于 2008-09-04T13:56:07.290 に答える
0

DateFormatクラスにはparseメソッドがあります。

詳細については、 DateFormatを参照してください。

于 2008-09-04T13:57:40.547 に答える