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

时间:2011-01-13 18:48:34

标签: java parsing datetime jodatime

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

    log(start);
    // Sunday, January 09, 2011 6:30:00 PM

我正在使用Joda Time's pattern syntax来解析DateTime:

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

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

    log(parser1.print(startTime));
    // Sunday, January 09, 2011 6:30:00 AM

2 个答案:

答案 0 :(得分:26)

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

如果您想使用12小时制,请将格式字符串更改为:

"EEEE, MMMM dd, yyyy h:mm:ss aa".

'h'将被解释为一天中的12小时小时(1..12)

答案 1 :(得分:2)

H会给你每天0-23的值,所以也许它正在读取它,看到6,并确定它必须是AM?

尝试使用小写h来获得当天的时钟。