【问题标题】:Getting wrong month when using SimpleDateFormat.parse使用 SimpleDateFormat.parse 时出现错误月份
【发布时间】:2014-06-10 13:12:56
【问题描述】:

在我的程序中有一个非常奇怪的问题。在这里你可以看到String birthday和Log来检查它:

birthday = String.valueOf(birthYear) + "-" + String.valueOf(birthMonth) + "-" + String.valueOf(birthDay);
Log.i(TAG, "Birthday: " + birthday)

然后我把它放到 SimpleDateFormat 并用Log检查它:

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

Date birthDate = sdf.parse(birthday);
Log.i(TAG, "Birth date  : " + birthDate);

然后在Logcat 我有:

I/App﹕ Birthday: 1999-10-15
I/App﹕ Birth date: Fri Jan 15 00:10:00 GMT+04:00 1999

所以你在日期中看到它是Jan,但在字符串中它是10,所以日期应该是这样的:

Fri Nov 15 00:10:00 GMT+04:00 1999

我的错误在哪里?

P.S 我认为我的问题与Getting wrong data when using SimpleDateFormat.parse()有关

【问题讨论】:

    标签: java android simpledateformat


    【解决方案1】:

    用途:

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

    月使用MM,分钟使用mmdocumentation...

    如果你想以特定格式打印Date,你应该使用:

     sdf.format(birthday)
    

    或另一个SimpleDateFormat,如果你想以不同的格式打印它...

    【讨论】:

    • 现在是Fri Oct 15 00:00:00 GMT+04:00 1999
    • 为什么是Oct?我觉得应该有Nov?
    • 为什么你认为应该是 11 月?十月是第十个月。
    【解决方案2】:

    我遇到了同样的问题,现在我发现了错误。我们应该使用MM 表示月份,mm 表示分钟,dd 表示一天。使用DD 将我的日期更改为错误的月份,所以我使用dd 表示日期,所以我使用的最终格式是yyyy-MM-dd。

    【讨论】:

      【解决方案3】:

      ThreeTenABP

      我想提供 2017 年的答案。对于 Android,首先获取 ThreeTenABP 库。说明在this question: How to use ThreeTenABP in Android Project。然后剩下的就这么简单了:

          LocalDate birthDate = LocalDate.of(birthYear, birthMonth, birthDay);
          System.out.println("Birth date  : " + birthDate);
      

      打印出来:

      Birth date  : 1999-10-15
      

      当您将年、月和日作为数字时,无需进行任何解析,这只会使事情复杂化。

      ThreeTenABP 是 java.time 或 JSR-310(现代 Java 日期和时间 API)到 Android Java 7 的向后移植。如果您使用的是 Java 8 或更高版本,java.time 是内置的。还有一个用于(非 Android)Java 6 和 7 的反向移植:ThreeTen Backport。

      【讨论】:

        猜你喜欢
        • 2014-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多