为什么Joda时间会将输入字符串中的PM更改为AM?

Tre*_*ree 8 java datetime parsing jodatime

我的输入字符串是PM时间:

    log(start);
    // Sunday, January 09, 2011 6:30:00 PM
Run Code Online (Sandbox Code Playgroud)

我正在使用Joda Time的模式语法来解析DateTime:

    DateTimeFormatter parser1 = 
    DateTimeFormat.forPattern("EEEE, MMMM dd, yyyy H:mm:ss aa");
    DateTime startTime = parser1.parseDateTime(start);
Run Code Online (Sandbox Code Playgroud)

那么,为什么我的输出字符串是AM?

    log(parser1.print(startTime));
    // Sunday, January 09, 2011 6:30:00 AM
Run Code Online (Sandbox Code Playgroud)

rob*_*x44 26

您的解析字符串包含"H",它告诉您的解析器将该值解释为24小时制的一天(0..23).所以6被解释为当天的第6小时.在早上.打印的AM是因为解析的整体日期被认为是在早上.

如果要使用12小时时间,请将格式字符串更改为:

"EEEE, MMMM dd, yyyy h:mm:ss aa".
Run Code Online (Sandbox Code Playgroud)

'h'将被解释为每天12小时(1..12)