尝试使用joda DateTimeFormatter解析日期时的运行时异常

时间:2014-01-17 14:19:29

标签: java jodatime

我正在执行下面的代码,它给了我

"Exception in thread "main" org.joda.time.IllegalFieldValueException: Cannot parse "12/17/2017 23:10": Value 23 for clockhourOfHalfday must be in the range [1,12]"

DateTimeFormatter dt = DateTimeFormat.forPattern("MM/dd/yyyy hh:mm");
System.out.println(dt.parseDateTime("12/17/2017 23:10"));

如果我将解析"12/17/2017 02:10",那么它会成功执行。

所以基本上,我需要解析24小时时钟格式的时间。

提前致谢。

2 个答案:

答案 0 :(得分:29)

正如您在异常中所看到的那样,

h在JodaTime中待了半天 您需要使用H(或可能k):

DateTimeFormatter dt = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm");
System.out.println(dt.parseDateTime("12/17/2017 23:10"));

DateTimeFormat API中有更多信息。

答案 1 :(得分:2)

也可以使用简单日期格式来实现。

DateFormat readDate = new SimpleDateFormat( "MM/dd/yyyy HH:mm");
Date date = readDate.parse("12/17/2017 23:10");
DateFormat writeDate = new SimpleDateFormat( "MM/dd/yyyy HH:mm");
System.out.println(writeDate.format(date));