2014-07-21 34 views
2

我有這個時間。 8:32:00 PM。如何將其轉換爲24小時Joda-Time LocalTime格式?有沒有時間轉換器在喬達時庫Joda時間字符串到LocalTime 24小時等效

+3

時間和格式的值是不同的概念。首先將'String'解析爲'LocalTime',然後以您想要的方式格式化 – MadProgrammer

+0

將時間轉換爲本地時間後,如何將其轉換爲等效的24小時格式?在這種情況下,8:32:00 PM是20:32:00? – user962206

+0

使用'DateTimeFormatter' – MadProgrammer

回答

9

開始通過解析StringLocalTime ...

String timeValue = "8:32:00 PM"; 
DateTimeFormatter parseFormat = new DateTimeFormatterBuilder().appendPattern("h:mm:ss a").toFormatter(); 
LocalTime localTime = LocalTime.parse(timeValue, parseFormat); 

然後格式化結果...

DateTimeFormatter outputFormat = new DateTimeFormatterBuilder().appendPattern("H:mm:ss").toFormatter(); 
String formatted = localTime.toString(outputFormat); 
System.out.println(formatted); 

哪會輸出20:32:00

請記住,值LocalTime和格式是兩個單獨的概念,您不能影響對象本身的「格式」,您只能將值的概念轉換爲String表示形式(通過格式化程序)

+0

但如果我的時間是這種格式呢? 「8:32 PM」? – user962206

+0

@ user962206你是什麼意思? 'String'值是'8:32 PM'?然後,您需要更改'parseFormat'來滿足您的要求。 – MadProgrammer

+0

@MadProgrammer您的用於生成字符串表示的代碼可以更簡單。 Joda-Time'LocalTime'類已經重載了['toString'方法](http://www.joda.org/joda-time/apidocs/org/joda/time/LocalTime.html#toString(java.lang.String) String))爲模式獲取一個字符串。 'String formatted = localTime.toString(「H:mm:ss」);'格式化程序的整行可以被刪除。 –

4

如果我明白你的問題,

一旦我轉換的時間爲本地時間如何將其轉換爲其對應的24小時格式?

你會使用DateTimeFormat創建DateTimeFormatter,像這樣 -

DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ss"); 
String str = fmt.print(dt); 

從鏈接的javadoc摘錄,

H  hour of day (0~23)   number  0 
m  minute of hour    number  30 
s  second of minute    number  55 
4

你不想轉換的時間(他們是同一時間),你想要格式的時間。 Joda有一個DateTimeFormatter類(詳情請參閱http://www.joda.org/joda-time/key_format.html)。

你可以使用它是這樣的:

DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ss"); 
String str = date.toString(fmt); 
相關問題