【问题标题】:SimpleDateFormat incorrectly rolling year forward during format of Date [duplicate]在日期格式期间,SimpleDateFormat 错误地向前滚动年份 [重复]
【发布时间】:2018-10-24 14:17:03
【问题描述】:

我目前正在使用 DateUtils 类,它有助于在系统中格式化日期。 我有一个格式为 yyyyMMdd 的日期,它是从字符串中解析的。

我传入另一种格式以接收格式为 E d MMM YY 的“句点”值。

下面,应该给我一个 MON 31 DEC 18 的时期。但是它返回 MON 31 DEC 19。为什么这一年会向前滚动?

谢谢

final SimpleDateFormat dateFormat_E_d_MMM_YY = new SimpleDateFormat("E d MMM YY");
final SimpleDateFormat dateFormat_yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
final Date date = dateFormat_yyyyMMdd.parse("20181231");
System.out.println(date);
System.out.println(dateFormat_E_d_MMM_YY.format(date));

【问题讨论】:

  • YY 是周年使用yy...
  • @Reimeus 我认为您可以提交您的评论作为答案。
  • 我建议你避免使用SimpleDateFormat 类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 的表现要好得多。

标签: java simpledateformat


【解决方案1】:

你有一个错字使用E d MMM yy 而不是E d MMM YY

来自文档:

y : 年份

Y : 周年

【讨论】:

    【解决方案2】:

    你写了YY,意思是星期。 你需要年份,因此你需要写yy

    如果您需要更多详细信息,可以在SimpleDateFormat 类的文档中查看不同变量的所有含义。

    y   Year            Year    1996; 96
    Y   Week year       Year    2009; 09
    M   Month in year   Month   July; Jul; 07
    w   Week in year    Number  27
    W   Week in month   Number  2
    D   Day in year     Number  189
    d   Day in month    Number  10
    

    【讨论】:

      猜你喜欢
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多