0

I am trying to validate date using Simple date format so that i can put it into MySQL database

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

Gives output, Wed Jan 05 00:13:00 GMT-06:00 2011 Can anyone explain why the date is being converted into time and thus preventing detection of an invalid month 13? Does java.util.date have a date object rather than a datetime object? A modified version of my code will be greatly helpful.

4

2 回答 2

4

你应该使用MM一个月。mm一小时一分钟

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

谁能解释为什么将日期转换为时间,从而防止检测到无效的第 13 个月?

因为您的模式指定了minutes而不是months。你想要MM而不是mm. 每当您有一个SimpleDateFormat不符合您预期的行为时,您应该根据文档检查您的模式。

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 的领导者之一开发,因此存在很多概念重叠。

于 2013-07-21T07:31:40.023 回答