3

早上好!在过去的两个小时里,我一直在使用以下代码,搜索论坛、Google 和 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 的工作原理吗?

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

4

3 回答 3

3

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

“DD”的意思是“一年中的一天”......所以你说的是一年中的第 25 天,但是在 7 月份......“一年中的一天”优先,所以你得到了一月25号代替。

于 2010-07-29T14:14:38.053 回答
1

DD 表示一年中的每一天,如儒略日。儒略日可以描述一年中的任何一天,因此月份被忽略。使用 dd 代替(月中的一天),你会得到正确的结果。

于 2010-07-29T14:24:17.990 回答
0

您必须注意格式化程序的区分大小写的问题。他们组织起来有点奇怪。

试试看

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

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

参考 JAVA 1.6 API SimpleDateFormat

于 2010-07-29T14:15:54.590 回答