2011-01-13 3 views
8

Meine Eingabezeichenfolge ist eine Uhr Zeit:Warum ändert Joda die PM in meiner Eingabezeichenfolge in AM?

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

ich Joda Time's pattern syntax bin mit wie die Datetime zu analysieren folgt:

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

Also, warum meine Ausgabe-String Uhr ist?

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

Antwort

25

Ihre Parse-Zeichenfolge enthält „H“, die Ihre Parser sagt den Wert als 24-Stunden-Stunde des Tages (0..23) zu interpretieren. Also wird die 6 als 6. Stunde des Tages interpretiert. Am Morgen. Das AM, das gedruckt wird, liegt daran, dass das gesamte analysierte Datum als am Morgen angesehen wird.

Wenn Sie 12-Stunden-Zeit verwenden möchten, ändern Sie Ihre Format-String zu:

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

'h' wird als eine 12-Stunden-Stunde des Tages interpretiert werden (1..12)

+0

Danke. Das hat es getan. – Tree

2

H gibt Ihnen einen Wert von 0-23 für jeden Tag, also vielleicht liest man das aus, sieht die 6 und stellt fest, dass es AM sein muss?

Verwenden Sie einen Kleinbuchstaben h, um die Uhrzeit des Tages zu erhalten.

Verwandte Themen