0

MySQLデータベースに入れることができるように、単純な日付形式を使用して日付を検証しようとしています

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
sdf.setLenient(false);
java.util.Date testDate = sdf.parse("2011-13-05");
System.out.println(testDate);

Wed Jan 05 00:13:00 GMT-06:00 2011 という出力が得られます。日付が時刻に変換され、無効な月 13 の検出が妨げられている理由を説明できる人はいますか? java.util.date には日時オブジェクトではなく日付オブジェクトがありますか? 私のコードの修正版は非常に役に立ちます。

4

2 に答える 2

4

月に使用する必要がありますMMmm時分の分です。

new SimpleDateFormat("yyyy-MM-dd");
于 2013-07-21T07:30:54.873 に答える
4

日付が時間に変換され、無効な月 13 の検出が妨げられている理由を説明できる人はいますか?

パターンは month ではなく minutes を指定するためです。代わりに. 期待どおりに動作しないがある場合はいつでも、ドキュメントに対してパターンを確認する必要があります。MMmmSimpleDateFormat

java.util.date には日時オブジェクトではなく日付オブジェクトがありますか?

いいえ、しかしJoda Timeはそうします ( LocalDate)。Joda Time はよりクリーンな日付/時刻 API であり、さまざまな概念を便利に分離します。

  • Instant(ある時点のみ - タイムゾーンやカレンダーはありません)
  • DateTime(タイムゾーンとカレンダー付きの日付と時刻)
  • LocalDate(特定のカレンダーの日付のみ)
  • LocalTime(特定のカレンダーの時刻のみ)
  • LocalDateTime(特定のカレンダーの日付と時刻)

API に関してはいくつかの粗いエッジがありますが、一般的にはjava.util.Dateおよびよりもはるかに優れていjava.util.Calendarます。Java 8 で提供されるJSR-310 APIは両方とも異なりますが、主に Joda Time のリーダーの 1 人によって開発されているため、多くの概念的な重複があります。

于 2013-07-21T07:31:40.023 に答える