2013-09-29 9 views
6

Właśnie zacząłem pracować z Joda-Time i otrzymałem poprawną prezentację mojej daty w 24-hour clock ("czas militarny"), ale wolałbym, żeby było to AM/pm. Sprawdziłem to i wspomniałem hourOfDay, które według mnie było wartością HH, więc próbowałem napisać pętlę, która podzieliłaby ją na AM/Pm, ale nigdy nie wyszło.Konwersja 24-godzinnego zegara na pm/pm w Joda-Time

DateTime dtf = new DateTime(wikiParsedDate); 


    if (hourOfDay == 00) { 
     hourOfDay == 12; 
     DateTimeFormatter builder = DateTimeFormat.forPattern("dd-MM-yyyy HH:mm:ss.SS'AM"); 
     return builder.print(dtf); 
    } else if (0 < hourOfDay && hourOfDay < 12) { 
     DateTimeFormatter builder = DateTimeFormat.forPattern("dd-MM-yyyy HH:mm:ss.SS'AM"); 
     return builder.print(dtf); 
    } else if (hourOfDay > 12) { 
     hourOfDay - 12 == hourOfDay; 
     DateTimeFormatter builder = DateTimeFormat.forPattern("dd-MM-yyyy HH:mm:ss.SS'PM"); 
     return builder.print(dtf); 
    } 

} 
+0

'hourOfDay - 12 == hourOfDay;' wydaje się źle. Czy masz na myśli 'hourOfDay - = 12;'? Ale to też nie zadziała. Musi to być coś w stylu 'dtf = dtf.withHourOfDay (dtf.getHourOfDay() - 12)' ale jest to również niepoprawne, ponieważ powinno być pozostawione do formatera, aby napisać AM lub PM –

Odpowiedz

19

Zobacz dokumentację interfejsu API pod numerem DateTimeFormat. To powinno zrobić, co chcesz:

DateTimeFormatter builder = DateTimeFormat.forPattern("dd-MM-yyyy hh:mm:ss.SSa"); 

Nie ma potrzeby komplikacji w różnych przypadkach.

+0

nie wiem jak to przegapiłem dzięki –

+0

Zobacz także 'DateTimeFormat.forStyle', aby wygenerować reprezentacje ciągów z formatem i językiem zlokalizowanym dla określonego [Locale] (http://docs.oracle.com/javase/8/docs/api/java/util/Locale.html). –

+0

Co to jest .SSa? Czy to spacja, a po niej am/pm? –