2013-09-29 119 views
6

我剛剛開始與Joda-Time一起工作,並且正確顯示了我的日期24-hour clock(「軍事時間」),但我寧願它是上午/下午。看着它,它提到hourOfDay我認爲是HH值,所以我試圖寫一個循環,將其分解成AM/Pm,但它從來沒有成功。在Joda-Time轉換24小時時間到上午/下午

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

查看DateTimeFormat的API文檔。這應該做你想做的事:

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嗎? –

相關問題