Java SimpleDataFormat(“dd MMM YYYY”)打印提前一年

Java SimpleDataFormat(“dd MMM YYYY”)打印提前一年,java,Java,我在代码中使用SimpleDataFormat(“dd-MMM-YYYY”),它给出了错误的输出 SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-YYYY"); System.out.println("Actual date : "+new Date()+" after Formatting : "+ dateFormat.format(new Date())); 上述代码给出: 实际日期:2014年12月

我在代码中使用SimpleDataFormat(“dd-MMM-YYYY”),它给出了错误的输出

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

    System.out.println("Actual date : "+new Date()+" after Formatting : "+ dateFormat.format(new Date()));
上述代码给出: 实际日期:2014年12月30日星期二13:51:06 IST格式后:2015年12月30日

以上代码为打印日期,年份为前1年。 本期仅适用于2014年12月28日至31日

提前谢谢。
--Ajay

您使用的是
yyy
,即“ISO-8601周年”。这几乎应该总是与
w
,“一年中的一周”一起使用。您希望
yyyy
显示正常的日历年

它们不同的原因是,一年中的第一个ISO-8601周是包括至少4天的第一周(周一至周日)。这意味着一年中的第一周包含第一个星期四。由于2015年1月1日是星期四,这意味着2014-12-29至2015-01-04的一周都是“2015年的一周,第一年的一周”。(我很惊讶,如果你看到12月28日…)

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

参见或