JodaTime如何正确解析dd-MM YYyy到DateTime

时间:2012-02-04 19:33:50

标签: java parsing jodatime

代码段:

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");

但绝不是。

提前致谢。

1 个答案:

答案 0 :(得分:8)

您遇到了区域设置问题。您发布的代码在我的机器上运行得非常好。但是,如果我将区域设置更改为Locale.FRENCH,我可以重现您收到的确切错误。

将您的构建器更改为:

DateTimeFormatter dtf = new DateTimeFormatterBuilder()
    .appendDayOfMonth(2)
    .appendLiteral('-')
    .appendMonthOfYearShortText()
    .appendLiteral('-')
    .appendTwoDigitYear(2050)
    .toFormatter().withLocale(Locale.US);