Java 从LocalDateTime字符串到LocalDate的Joda时间
我正在使用JodaTime获取创建帐户的日期和时间。格式是Java 从LocalDateTime字符串到LocalDate的Joda时间,java,android,jodatime,Java,Android,Jodatime,我正在使用JodaTime获取创建帐户的日期和时间。格式是 2017-04-05T12:38:35.585 当我得到它时,我会将它作为字符串存储在数据库中,所以我四处寻找将它从字符串格式化为LocalDate的方法,但在我在线找到的任何东西中都没有成功。在我看来,我的下一步是一个可怕的解决方案,在字符串中循环,直到找到T并删除它之后的所有内容。所以我只剩下 2017-04-05. 但如果可能的话,最好把日期定为 05/04/2017 使用ISODateTimeFormat获取LocalD
2017-04-05T12:38:35.585
当我得到它时,我会将它作为字符串存储在数据库中,所以我四处寻找将它从字符串格式化为LocalDate的方法,但在我在线找到的任何东西中都没有成功。在我看来,我的下一步是一个可怕的解决方案,在字符串中循环,直到找到T并删除它之后的所有内容。所以我只剩下
2017-04-05.
但如果可能的话,最好把日期定为
05/04/2017
使用
ISODateTimeFormat
获取LocalDateTime
并从中获取LocalDate
。
小心使用正确的语言环境
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
我正在使用joda time 2.7
LocalDateTime
类有一个构造函数,它接受一个字符串并对其进行解析。然后您只需使用所需的模式调用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));
输出将是相同的。谢谢,我在两个答案中都尝试了这两种解决方案,并且都有效:)