2013-09-29 118 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吗? –

相关问题