处理DATE时非法模式组件:p

时间:2015-02-16 10:20:41

标签: java jodatime

错误:

  

线程“main”中的异常java.lang.IllegalArgumentException:非法模式组件:p       at org.joda.time.format.DateTimeFormat.parsePatternTo(DateTimeFormat.java:559)       at org.joda.time.format.DateTimeFormat.createFormatterForPattern(DateTimeFormat.java:682)       at org.joda.time.format.DateTimeFormat.forPattern(DateTimeFormat.java:170)       在com.myjavapapers.time.JodaTimeDemo.getDate(JodaTimeDemo.java:29)       在com.myjavapapers.time.JodaTimeDemo.main(JodaTimeDemo.java:21)

System.out.println(getDate("09/16/14 1:07 PM", "MM/dd/yy hh:mm pm"));


public static Date getDate(final String dateTimeS, final String format) {
    if (StringUtils.isEmpty(dateTimeS)) {
        return null;
    }
    DateTimeFormatter fmt   = DateTimeFormat.forPattern(format);
    DateTime dateTime       = fmt.parseDateTime(dateTimeS);

    return dateTime.toDate();
}

1 个答案:

答案 0 :(得分:2)

错误告诉您p不是解析器的允许字符。您必须使用组件a来解析AM / PM字符串。这应该有效:

getDate("09/16/14 1:07 PM", "MM/dd/yy hh:mm a")

请查看documentation以获取更多解释。