10

我正在尝试使用 解析字符串"2/20/2012 12:00:00 AM"SimpleDateFormat但它似乎是在下午 12 点出现。

    Date fromFmt = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss aa")
                       .parse("2/20/2012 12:00:00 AM");

    // Calendar months are 0-indexed
    Date fromCal = new Date(new GregorianCalendar(2012, 1, 20, 0, 0, 0)
                       .getTimeInMillis());

    System.out.println(fromFmt);
    System.out.println(fromCal);

输出:

Mon Feb 20 12:00:00 PST 2012
Mon Feb 20 00:00:00 PST 2012

我希望他们俩都输出后者。我的格式字符串有问题吗?

(请不要说“使用 JodaTime”。)

4

1 回答 1

24

改用这个:

new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa")

请注意,我使用hh的是HH. 前者这样做:

上午/下午小时 (1-12)

HH做这个:

一天中的小时 (0-23)


你告诉SimpleDateFormat他们你将在一小时内通过 0-23 范围内,但你实际上并没有这样做。这就是为什么你会遇到这个问题。

于 2013-07-18T00:02:23.860 回答