Joda-Time从带有Pattern的String创建LocalDate

时间:2015-12-17 20:50:32

标签: java parsing jodatime formatter

我尝试使用JodaTime库从输入字符串创建LocalDate对象。该字符串来自我无法控制的数据库。输入的出生日期看起来像完全

1963-07-19T00:00:00.000+0000

我只想要1963-07-19部分,我不想要时间部分。所以我试着像这样实现一个格式化程序:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");

然后像这样创建LocalDate对象:

LocalDate dob = formatter.parseLocalDate(dateOfBirth);

但我收到错误:

Invalid format: "1963-07-19T00:00:00.000+0000" is malformed at "T00:00:00.000+0000"

我还尝试过像这样的格式化程序:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'hh:mm:ss.SSSZ");

但后来我收到了错误:

Cannot parse "1963-07-19T00:00:00.000+0000": Value 0 for clockhourOfHalfday must be in the range [1,12]

想知道如何实现我的目标?

1 个答案:

答案 0 :(得分:2)

您的第一个示例无效,因为parseLocalDate必须将整个输入字符串与您的模式匹配。

对于您的第二个示例,根据javadoc of DateTimeFormat,模式字母h定义

h       clockhour of halfday (1~12)  number        12

看起来你想要

H       hour of day (0~23)           number        0