我正在尝试使用简单的日期格式验证日期,以便可以将其放入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是否有date对象而不是datetime对象?我的代码的修改版本将会非常有帮助。
发布于 2013-07-21 15:30:55
你应该使用MM一个月。mm是针对的。
new SimpleDateFormat("yyyy-MM-dd");发布于 2013-07-21 15:31:40
谁能解释为什么日期被转换为时间,从而阻止检测到无效的月份13?
因为您的模式指定分钟而不是月。您想要MM而不是mm。每当您有一个SimpleDateFormat没有按照您期望的方式运行时,您应该根据文档检查您的模式。
java.util.date有date对象而不是datetime对象吗?
不,但Joda Time有(LocalDate)。Joda Time是一种更清晰的日期/时间API,它有助于区分不同的概念:
Instant (只是一个时间点-没有时区或calendar)DateTime (带有时区的日期和时间)和calendar)LocalDate (只是特定calendar)LocalTime中的日期(只是特定calendar)LocalDateTime中的一天中的时间(特定日历中的日期和时间))在应用编程接口方面有一些粗糙的边缘,但它通常比java.util.Date和java.util.Calendar好得多。将在Java8中提供的JSR-310 API与两者都不同,但主要是由Joda Time的领导者之一开发的,因此概念上有很多重叠。
https://stackoverflow.com/questions/17770060
复制相似问题