SimpleDateParser生成错误的日期?

时间:2010-07-29 14:12:00

标签: java parsing date formatting simpledateformat

早上好!在过去的两个小时里,我一直在使用以下代码,搜索论坛,谷歌和JDK 1.6文档,以了解发生了什么,但似乎无法使这项工作。我希望代码输出07/25/2010 11:59:33 PM但我得到的是01/25/2010 11:59:33 PM。

String dateString = "07/25/2010 11:59:33 PM";
DateFormat format = new SimpleDateFormat("MM/DD/yyyy hh:mm:ss a");
Date testDate = format.parse( dateString );

System.out.println(format.format(testDate));

认为它可能与JDK有关,我尝试使用Joda-Time编写相同的内容并获得相同的结果。我错过了DateFormat如何工作的东西吗?

提前感谢您提供的任何见解!

3 个答案:

答案 0 :(得分:3)

问题是格式字符串中的“DD” - 它应该是“dd”。

“DD”表示“一年中的某一天”...所以你说的是一年中的第25天,但在7月份......“一年中的一天”优先考虑,所以你'取而代之的是1月25日。

答案 1 :(得分:1)

DD表示Julian day中的日期。朱利安日可以描述一年中的任何一天,因此忽略月份。使用dd代替(每月),您将得到正确的结果。

答案 2 :(得分:0)

你必须注意格式化程序的区分大小写的问题。他们有点怪异。

尝试

DateFormat format = new SimpleDateFormat("MM/DD/yyyy hh:mm:ss a");

编辑:DD表示一年中的一天,dd =一个月中的一天

参考JAVA 1.6 API SimpleDateFormat