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

Mat*_*all 4 java parsing date simpledateformat

SimpleDateFormat:

SimpleDateFormat pdf = new SimpleDateFormat("MM dd yyyy hh:mm:ss:SSSaa");
Run Code Online (Sandbox Code Playgroud)

抛出的异常pdf.parse("Mar 30 2010 5:27:40:140PM");:

java.text.ParseException: Unparseable date: "Mar 30 2010 5:27:40:140PM"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?


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

Bal*_*usC 11

首先,三个月的代表将由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"));
Run Code Online (Sandbox Code Playgroud)

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

Tue Mar 30 17:27:40 BOT 2010

另见java.text.SimpleDateFormatjavadoc.

为什么你叫它pdf超出我,所以我重命名了sdf;)


Rom*_*man 8

来自SimpleDateFormat javadocs:

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

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


Eya*_*der 6

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