2017-04-05 53 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

相关问题