Почему время Joda меняет PM в моей входной строке на AM? - PullRequest
8 голосов
/ 13 января 2011

Моя входная строка - время 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

Ответы [ 2 ]

26 голосов
/ 13 января 2011

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

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

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

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

2 голосов
/ 13 января 2011

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

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

...