Sér*_*els 10 java jodatime date-parsing date-formatting
不应该String使用特定的格式化DateTimeFormatter进行解析LocalDateTime.parse()吗?
测试
DateTimeFormatter formatter = ISODateTimeFormat.dateTimeNoMillis()
LocalDateTime ldt = new LocalDateTime()
String val = ldt.toString(formatter)
System.out.println(val) //2013-03-26T13:10:46
// parse() throws java.lang.IllegalArgumentException: Invalid format: "2013-03-26T13:10:46" is too short
LocalDateTime nldt = LocalDateTime.parse(val, formatter)
Run Code Online (Sandbox Code Playgroud)
看看JavaDoc:
返回一个基本格式化程序,它结合了一个没有毫秒的基本日期和时间,用'T'(yyyyMMdd'T'HHmmssZ)分隔.对于零,时区偏移为'Z',对于非零,时区偏移为'±HHmm'.默认情况下,解析器是严格的,因此无法解析时间字符串24:00.
这里的关键似乎是时区偏移是'Z'表示零,而形状'±HHmm'表示非零.Joda Time显然希望获得时区信息parse().
我附加"Z"到您解析的日期字符串,它更好地工作:
DateTimeFormatter formatter = ISODateTimeFormat.dateTimeNoMillis();
LocalDateTime ldt = new LocalDateTime();
String val = ldt.toString(formatter);
System.out.println(val);
val += "Z";
LocalDateTime nldt = LocalDateTime.parse(val, formatter);
System.out.println(nldt.toString());
Run Code Online (Sandbox Code Playgroud)
输出是:
2013-03-26T17:50:06
2013-03-26T17:50:06.000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12012 次 |
| 最近记录: |