Joda-time 从 LocalDateTime 字符串到 LocalDate

Joda-time from LocalDateTime string to LocalDate

我正在使用 JodaTime 获取创建帐户的日期和时间。格式为

2017-04-05T12:38:35.585

当我得到它时,我将它作为字符串存储在我的数据库中,所以我四处寻找将它从字符串格式化为 LocalDate 的方法,但我在网上找到的任何东西都没有成功。在我看来,我的下一步是一个可怕的解决方案,循环遍历字符串,直到找到 T 并删除它后面的所有内容。所以我只剩下

2017-04-05. 

但如果可能的话,最好将日期设置为

05/04/2017

使用 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

我正在使用 joda-time 2.7

LocalDateTime class 有一个接受 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));

输出是一样的。