日期对象的奇怪行为

时间:2011-11-04 11:16:21

标签: java date

 SimpleDateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy");
 Date date = dateFormat.parse("11/04/2011");
 System.out.println(date);
 System.out.println(dateFormat.format(date));

Tue Jan 04 00:11:00 IST 2011
11/04/2011

输出日期对象时显示为1月而不是11月。但是,当格式化相同的日期对象时,它正确地显示为11月。

通过制作MM / dd / yyyy,它都显示正确的结果。但是,如果mm / dd / yyyy可疑,mm / dd / yyyy会抛出一个Unparseable日期异常吗?

4 个答案:

答案 0 :(得分:5)

常见错误:mm is the pattern for minutes。您想使用MM来解析/打印月份。使用MM/dd/yyyy代替mm/dd/yyyy

由于您将值11解析为日期的分钟部分,然后打印日期的第一部分, dateFormat.format(date) 的结果看起来正确。

答案 1 :(得分:4)

mm/dd/yyyy将其更改为MM/dd/yyyy

信函日期或时间组件演示示例

M   Month in year   Month   July; Jul; 07

m   Minute in hour  Number  30

参见

答案 2 :(得分:1)

请注意,不推荐使用日期。您应该使用Calendar类。

答案 3 :(得分:1)

它不是腥,大写的M表示一年中的一个月,而uncap m表示以小时为单位的分钟 咨询这个http://download.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html