2017-04-05 123 views
3

我使用JodaTime獲取創建帳戶的日期和時間。格式來Joda時間從LocalDateTime字符串到LocalDate

2017-04-05T12:38:35.585 

當我得到這個我將其存儲在我的數據庫作爲一個字符串所以我想方設法從字符串格式化LOCALDATE這環顧四周,但一直沒在任何東西我已經成功的在網上找到。在我看來,我的下一步是一個可怕的解決方案,通過字符串循環直到找到T並刪除它後面的所有內容。所以我留下了

2017-04-05. 

但是,理想的情況是,如果有可能的日期爲

05/04/2017 

回答

2

使用ISODateTimeFormat獲得LocalDateTime,並從該得到LocalDate。 小心使用權Locale

String input="2017-04-05T12:38:35.585"; 

LocalDateTime ldt = ISODateTimeFormat.localDateOptionalTimeParser() 
        .withLocale(Locale.ENGLISH) 
        .parseLocalDateTime(input); 

System.out.println(ldt.toLocalDate());//prints 2017-04-05 
+0

謝謝,這工作! – Dannys19

1

我使用喬達時間2.7

LocalDateTime類有一個構造函數,它需要String並解析它。然後,你只需要調用toString()方法你想要的圖案:

String input = "2017-04-05T12:38:35.585"; 
LocalDateTime d = new LocalDateTime(input); 
System.out.println(d.toString("dd/MM/yyyy")); 

輸出:

05/04/2017 

注意:您還可以使用ISODateTimeFormat解析和DateTimeFormatter而不是toString()得到的輸出:

LocalDateTime d = ISODateTimeFormat.localDateOptionalTimeParser().parseLocalDateTime(input); 
DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/yyyy"); 
System.out.println(fmt.print(d)); 

的輸出將是相同的。

+0

謝謝,我在兩個答案中都嘗試了兩種解決方案,並且都工作:) – Dannys19

相關問題