Java SimpleDateFormat 未正确解析

Java SimpleDateFormat not parsing correctly

我正在处理输入文件中的日期列表,我需要将每个日期从字符串转换为日期。格式示例:

2013 年 9 月 2 日 7:34:17 下午
2011 年 1 月 13 日 10:47:36 上午

每次读取一行时,日期都会存储在字符串变量中dateAsString。这是我得到的:

DateFormat format = new SimpleDateFormat("MM/dd/YYYY hh:mm:ss a");  
Date myDate = format.parse(dateAsString);  
System.out.println(myDate.toString());  

输出不正确:

9/2/2013 7:34:17 下午变为 12 月 30 日星期日 19:34:17 EST 2012
1/13/2011 10:47:36 AM 变为 Sun Dec 26 10:47:36 EST 2010

看起来很简单,所以我很困惑。我做错了什么?

只需尝试 'yyyy' 而不是 'YYYY'

大写 'Y' 表示 "week year" 其中 'y' 代表实际年份。请尝试使用 yyyy

如需更多格式化帮助,请查看 SimpleDateFormat API,其中提供了要使用的模式示例。

额外信息

以防万一你想知道,"week year" 是一年中所有周都是整周的一年

您的格式不正确,如您在 Javadoc 中所见:

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

年份部分使用 yyyy 而不是 YYYY