2

日志(2 个不同的日期):

START TIME BEFORE PARSE: 06/27/2012 09:00
START TIME AFTER PARSE : Thu Mar 06 09:00:00 EET 2014


START TIME BEFORE PARSE: 07/06/2012 09:00
START TIME AFTER PARSE : Thu Jun 07 09:00:00 EEST 2012

代码 :

DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
            Date date = sdf.parse(time);
            System.out.println("TIME BEFORE PARSE: " + time);
            System.out.println("TIME AFTER PARSE : " + date);

为什么过年会乱?如何让它工作?

4

5 回答 5

6

因为您将月份与日期反转:

              dd/MM/yyyy HH:mm
              06/27/2012 09:00

一年没有第 27 个月。

于 2012-07-10T07:00:07.840 回答
2

第一个示例中的月份在27我知道的任何日历中都无效。(您可能只是在您的输入或您选择的格式中弄错了日/月顺序。)

于 2012-07-10T07:00:16.437 回答
2

您使用模式 dd/MM/yyyy 来解析日期 06/27/2012。我怀疑27是一个月。适当的格式是 MM/dd/yyyy。

DateFormat 默认情况下是宽松的,因此会将 27 视为有效月份:2 年 + 3 个月,因此您将在 2 年后的 3 月结束。

于 2012-07-10T07:01:26.890 回答
1
    String time = "06/27/2012 09:00";
    DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm");
    Date date = sdf.parse(time);
    System.out.println("TIME BEFORE PARSE: " + time);
    System.out.println("TIME AFTER PARSE : " + date);

在您的示例中,日期格式错误。你给了“dd/MM/yyyy HH:mm”,应该是“MM/dd/yyyy HH:mm”

于 2012-07-10T07:07:16.690 回答
0

You have used the pattern dd/MM/YYYY , but you have entered the date as MM/dd/YYYY, causing you this weird behaviour..

于 2012-07-10T07:08:48.297 回答