我尝试使用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]
想知道如何实现我的目标?
答案 0 :(得分:2)
您的第一个示例无效,因为parseLocalDate
必须将整个输入字符串与您的模式匹配。
对于您的第二个示例,根据javadoc of DateTimeFormat
,模式字母h
定义
h clockhour of halfday (1~12) number 12
看起来你想要
H hour of day (0~23) number 0