2013-09-29 2 views
6

Я только начал работать с Joda-Time и получил его, чтобы правильно отобразить дату в 24-hour clock («военное время»), но я предпочел бы быть am/pm. Посмотрел, и он упомянул hourOfDay, который, как я понял, был значением HH, поэтому я попытался написать цикл, который разбил бы его на AM/Pm, но он никогда не срабатывал.Преобразование 24-часового времени в am/pm в 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;' кажется неправильным. Вы имеете в виду 'hourOfDay - = 12;'? Но это тоже не сработает. Это должно быть что-то вроде 'dtf = dtf.withHourOfDay (dtf.getHourOfDay() - 12)', но это также неверно, так как его нужно оставить форматиру для записи AM или PM –

ответ

19

Посмотрите на документацию API от DateTimeFormat. Это должно делать то, что вы хотите:

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

Нет необходимости в осложнении в разных случаях.

+0

не уверен, как я пропустил это благодаря тонне –

+0

И посмотрите на 'DateTimeFormat.forStyle', чтобы генерировать строковые представления с форматом и языком, локализованным для определенного [Locale] (http://docs.oracle.com/javase/8/docs/api/java/util/Locale.html). –

+0

Что такое .SSa? Это пробел, за которым следует am/pm? –

Смежные вопросы