【问题标题】:Java SimpleDateFormat Bug?Java SimpleDateFormat 错误?
【发布时间】:2013-08-14 09:42:55
【问题描述】:

有谁知道为什么我得到下面的输出? 我预计是 2012-12 而不是 2013-12

Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR,2012);
cal.set(Calendar.MONTH,12-1);
cal.set(Calendar.DATE,30);
Date date=cal.getTime();
System.out.println(date);

String YYYY_MM=format.format(date);
System.out.println(YYYY_MM);

输出

Sun Dec 30 18:30:52 KST 2012
2013-12

预期

Sun Dec 30 18:30:52 KST 2012
2012-12

【问题讨论】:

  • 你能出示format的声明吗?顺便说一句,SimpleDateFormatter 不会有 bug,一定是配置错误
  • 您的代码中有 2 个System.out.println。你能发布两个结果吗?

标签: java calendar simpledateformat


【解决方案1】:

您使用了不正确的日期格式化程序。你可以试试这个方法,

    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.YEAR,2012);
    cal.set(Calendar.MONTH,12-1);
    cal.set(Calendar.DATE,30);
    Date date=cal.getTime();
    System.out.println(date);
    SimpleDateFormat format=new SimpleDateFormat("yyyy-MM");
    // Java SimpleDateFormat use `yyyy` (lowercase) not `YYYY`(uppercase)
    String YYYY_MM=format.format(date);
    System.out.println(YYYY_MM); //out put 2012-12

为我服务

Sun Dec 30 15:20:08 IST 2012
2012-12

【讨论】:

  • OP 是否应该发现差异?
猜你喜欢
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2018-09-20
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多