Почему время Joda меняет PM в моей строке ввода на AM?

Моя входная строка - это время PM:

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

Я использую синтаксис шаблона Joda Time следующим образом для анализа 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

person Tree    schedule 13.01.2011    source источник


Ответы (2)


Ваша строка синтаксического анализа содержит «H», что говорит вашему синтаксическому анализатору интерпретировать значение как 24-часовой час дня (0..23). Таким образом, 6 интерпретируется как 6-й час дня. Утром. Напечатанное AM связано с тем, что общая проанализированная дата считается утренней.

Если вы хотите использовать 12-часовое время, измените строку формата на:

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

'h' будет интерпретироваться как 12-часовой час дня (1..12)

person robert_x44    schedule 13.01.2011

H даст вам значение 0-23 для каждого дня, так что, может быть, он считывает это, видит 6 и определяет, что это должно быть AM?

Попробуйте использовать строчную букву h, чтобы получить часы дня.

person rownage    schedule 13.01.2011