代码段:
DateTimeFormatter dtf = new DateTimeFormatterBuilder()
.appendDayOfMonth(2)
.appendLiteral('-')
.appendMonthOfYearShortText()
.appendLiteral('-')
.appendTwoDigitYear(2050) // pivot point for correct interpretation of last two digits of year.
.toFormatter();
String strDate = "04-Feb-12";
DateTime updateDate = dtf.parseLocalDate(strDate).toDateTimeAtStartOfDay();
输出:
java.lang.IllegalArgumentException: Invalid format: "04-Feb-12" is malformed at "Feb-12"
at org.joda.time.format.DateTimeFormatter.parseLocalDateTime(DateTimeFormatter.java:821)
at org.joda.time.format.DateTimeFormatter.parseLocalDate(DateTimeFormatter.java:765)
...
我也试过了:
DateTimeFormatter dtf = DateTimeFormat.forPattern("dd-MMMM-yy");
但绝不是。
提前致谢。
答案 0 :(得分:8)
您遇到了区域设置问题。您发布的代码在我的机器上运行得非常好。但是,如果我将区域设置更改为Locale.FRENCH
,我可以重现您收到的确切错误。
将您的构建器更改为:
DateTimeFormatter dtf = new DateTimeFormatterBuilder()
.appendDayOfMonth(2)
.appendLiteral('-')
.appendMonthOfYearShortText()
.appendLiteral('-')
.appendTwoDigitYear(2050)
.toFormatter().withLocale(Locale.US);