SimpleDateFormat未正确处理上午12点

Dav*_*les 8 java calendar date simpledateformat

我试图解析字符串"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);
Run Code Online (Sandbox Code Playgroud)

输出:

Mon Feb 20 12:00:00 PST 2012
Mon Feb 20 00:00:00 PST 2012
Run Code Online (Sandbox Code Playgroud)

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

(并且请没有人说'使用JodaTime'.)

Dan*_*lan 18

请改用:

new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa")
Run Code Online (Sandbox Code Playgroud)

请注意我正在使用hh而不是HH.前者这样做:

上午/下午(1-12)

HH 做这个:

一天中的小时(0-23)


你告诉SimpleDateFormat你,你将在0-23范围内的一小时内通过,但你实际上并没有这样做.这就是你遇到这个问题的原因.