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