为什么这个SimpleDateFormat不能解析这个日期字符串?

SimpleDateFormat:

SimpleDateFormat pdf = new SimpleDateFormat("MM dd yyyy hh:mm:ss:SSSaa"); 

pdf.parse("Mar 30 2010 5:27:40:140PM");引发的例外情况pdf.parse("Mar 30 2010 5:27:40:140PM");

 java.text.ParseException: Unparseable date: "Mar 30 2010 5:27:40:140PM" 

有任何想法吗?


编辑:感谢快速回答。 你们都是对的,我只是错过了SimpleDateFormat文档中的一个关键句子 – 我应该把它称为一天。

来自SimpleDateFormat javadocs :

月份:如果模式字母的数量为3或更多,则将月份解释为文本; 否则,它被解释为一个数字。

尝试使用像“MMM dd yyyy”这样的模式

首先,由MMM代表三个月。 其次,一个两位数小时用h表示。 第三, Mar似乎是英文,你需要提供Locale.ENGLISH ,否则它将无法在具有不同默认语言环境的机器中正常工作。

以下作品:

 SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy h:mm:ss:SSSa", Locale.ENGLISH); System.out.println(sdf.parse("Mar 30 2010 5:27:40:140PM")); 

结果(我在格林尼治标准时间4点没有DST):

  Tue Mar 30 17:27:40 BOT 2010 

另请参阅java.text.SimpleDateFormat javadoc 。

为什么你称它为pdf超出我的范围,所以我将其重命名为sdf ;)

MM代表数字月份。 使用MMM。