SimpleDateFormat(" dd-MMM-YYYY")提前一年打印

时间:2015-01-02 08:44:08

标签: java

我在我的代码中使用SimpleDateFormat(" dd-MMM-YYYY"),这会产生错误的输出。

    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-YYYY");

    System.out.println("Actual date : "+new Date()+" after Formatting : "+ dateFormat.format(new Date()));

以上代码给出: 实际日期:Tue Dec 30 13:51:06 IST 2014格式化后:2015年12月30日

以上代码为年份为1年的打印日期。 此问题仅适用于2014年12月28日至31日的日期。

提前致谢。 --Ajay

1 个答案:

答案 0 :(得分:7)

您正在使用YYYY,这是“ISO-8601周年”。这应该总是w,“一年一周”一起使用。您希望yyyy显示正常的日历年。

他们与众不同的原因是,一年中第一个ISO-8601周是第一周(周一至周日),包括至少4天。这意味着一年中的第一周是包含第一个星期四的那一周。 2015年1月1日是星期四,这意味着2014-12-29到2015-01-04的那一周都是“2015年的一周,第1年的一周”。 (如果你看看12月28日是否会感到惊讶......)

在其他年份,一年的前几天是在前一年的第52周或第53周。例如,2010年1月1日是2009年第53周,2011年1月1日是2010年第52周。