【问题标题】:Issue with SimpleDateFormatSimpleDateFormat 的问题
【发布时间】:2015-04-27 11:59:38
【问题描述】:

我正在使用SimpleDateFormat 处理日期格式。但是当我以提供格式格式化我的日期时,年份值会增加 1。该值会发生这种情况。为什么会这样?

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");
System.out.println("dob - "+date); // Java date
System.out.println("formatted date - "+sdf.format(date));

输出如下:

dob - Sun Dec 28 00:00:00 IST 1975
formatted date - 28-12-1976

年值增加 1。为什么会这样。

【问题讨论】:

    标签: java date simpledateformat


    【解决方案1】:

    根据Oracle docs

    大写Y表示周年,你应该使用yyyy代替YYYY

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY"); 更改为

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
    

    【讨论】:

      【解决方案2】:

      你应该使用SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); y 表示年份,而 'Y' 表示周年份。

      以下是在 SimpleDateFormat 中使用的受支持代码。

      Letter  Date or Time Component  Presentation    Examples
      G   Era designator  Text    AD
      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
      F   Day of week in month    Number  2
      E   Day name in week    Text    Tuesday; Tue
      u   Day number of week (1 = Monday, ..., 7 = Sunday)    Number  1
      a   Am/pm marker    Text    PM
      H   Hour in day (0-23)  Number  0
      k   Hour in day (1-24)  Number  24
      K   Hour in am/pm (0-11)    Number  0
      h   Hour in am/pm (1-12)    Number  12
      m   Minute in hour  Number  30
      s   Second in minute    Number  55
      S   Millisecond Number  978
      z   Time zone   General time zone   Pacific Standard Time; PST; GMT-08:00
      Z   Time zone   RFC 822 time zone   -0800
      X   Time zone   ISO 8601 time zone  -08; -0800; -08:00
      

      【讨论】:

        【解决方案3】:

        尝试使用“yyyy”而不是“YYYY”。

        查看更多信息: SimpleDateFormat producing wrong date time when parsing "YYYY-MM-dd HH:mm"

        • Y 表示“周年”
        • y 表示“日历年”

        【讨论】:

        • @Shirish 更快 :-)
        猜你喜欢
        • 1970-01-01
        • 2011-08-09
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 2016-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多