【问题标题】:Why output other date? [duplicate]为什么要输出其他日期? [复制]
【发布时间】:2017-03-27 12:34:25
【问题描述】:

我有这个代码

public class HelloWorld{

 public static void main(String []args){
     try{
        java.util.Date mDate;
        java.text.SimpleDateFormat readFormat = new java.text.SimpleDateFormat("yyyy-mm-dd");
        mDate = readFormat.parse("2017-02-05");
        System.out.println("date: " + mDate.toString());
     } catch (java.text.ParseException e1) {
            e1.printStackTrace();
        }
     }

}

我预计输出如 2017 年 2 月 5 日 00:02:00 UTC

但我得到输出 Jan 05 00:02:00 UTC 2017 为什么?我的代码有什么问题?

【问题讨论】:

  • System.out.println("date:" + readFormat.format(mDate);
  • mm vs MM ......
  • 但是为什么输出是一月而不是二月???字符串日期是 2017-02-05,输出类似于 2017-01-05
  • @Selvin 我认为问题在于为什么 readFormat.parse("2017-02-05") 会在一月份结束。
  • @Axel,可能是因为Jan 是公历中一年中的第一个月,因此是任何解析日期的默认值。

标签: java android date simpledateformat


【解决方案1】:

当你创建这种格式时:new java.text.SimpleDateFormat("yyyy-mm-dd"),这意味着

  1. 4 位数年份
  2. 2 位分钟数
  3. 2 位数的月份日期

所以“2017-02-05”是 2017 年第 5 天的两分钟,也就是 1 月 5 日。

您应该使用new java.text.SimpleDateFormat("yyyy-MM-dd")。请参阅documentation

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多