2011-01-13 4 views
8

Moje ciąg wejściowy jest czas PM:Dlaczego czas Joda zmienia PM w moim ciągu wejściowym na AM?

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

Używam Joda Time's pattern syntax w następujący sposób do analizowania DateTime:

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

Więc dlaczego moje wyjście ciąg AM?

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

Odpowiedz

25

Twój parse ciąg zawiera „H”, który opowiada swoją parser zinterpretować wartość jako 24-godzinnym godziny dziennie (0..23). Tak więc 6 jest interpretowane jako 6 godzina dnia. Rankiem. Argument AM, który jest drukowany, jest taki, że cała spodziewana data jest uznawana za rano.

Jeśli chcesz użyć czasu 12-godzinny, zmień format ciąg:

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

'H' będzie interpretowany jako 12-godzinnym godziny dziennie (1..12)

+0

Dzięki. Tak było. – Tree

2

H da ci wartość 0-23 każdego dnia, więc może to odczytuje, widząc 6 i określając, że musi to być AM?

Spróbuj użyć małej litery h, aby uzyskać całodobową godzinę.