【问题标题】:SimpleDateFormat("dd-MMM-YYYY") printing year one year ahead [duplicate]SimpleDateFormat(“dd-MMM-YYYY”)提前一年打印一年[重复]
【发布时间】:2015-01-02 08:44:07
【问题描述】:

我在我的代码中使用 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 after Formatting : 30-Dec-2015

上面的代码是打印日期,其中 Year 提前 1 年。 此问题仅适用于 2014 年 12 月 28 日至 31 日的日期。

提前致谢。 --阿杰

【问题讨论】:

标签: java


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    相关资源
    最近更新 更多