0

我有一个"28NOV2015"大写的ddMMMyyyy日期MMM

<field name="BirthDate" type="date" format="ddMMMyyyy"/>

解析日期时出现以下错误

线程“主”org.springframework.core.convert.ConversionFailedException 中的异常:无法从类型 [java.lang.String] 转换为值 '28NOV2015' 的类型 [java.util.Date];嵌套异常是 java.lang.IllegalArgumentException

通过将其作为字符串然后强制转换来解决它是显而易见的并且已经完成了。

有什么方法可以直接解析它。

4

1 回答 1

0

您必须设置 shortWeekdays 但是您将在文件中收到并将 DateTypeHandler 覆盖到您自定义的 SimpleDateFormat

public class MyCustomDateFormatHandler extends DateTypeHandler {

    String[] capitalDays = {
        "", "SUN", "MON",
        "TUE", "WED", "THU",
        "FRI", "SAT"
    };

    @Overwrite
    protected DateFormat createDateFormat() {
            if (this.pattern == null) {
                return createDefaultDateFormat();
            }

            symbols = new DateFormatSymbols(this.locale);
            symbols.setShortWeekdays(capitalDays);
            DateFormat df = new SimpleDateFormat(this.pattern, symbols);;
            df.setLenient(this.lenient);
            if (this.timeZone != null) {
                df.setTimeZone(this.timeZone);
            }
            return df;
        }

}

并使用它

<typeHandler name="myCustomDateFormatHandler" class="MyCustomDateFormatHandler" />

<field name="BirthDate" type="date" format="ddMMMyyyy" typeHandler="myCustomDateFormatHandler"/>
于 2016-11-10T10:25:54.197 回答