JodaTime IllegalArgumentException:格式无效

JodaTime IllegalArgumentException: Invalid format

此代码抛出 "invalid format" 或 "malformed" 异常:

代码:

strDate = "21/10/2015 12:00:00 AM";
format = "dd/MM/yyyy hh:mm:ss a";

DateTime.parse(strDate, DateTimeFormat.forPattern(format)).toDate();

异常:

java.lang.IllegalArgumentException: Invalid format: "21/10/2015 12:00:00 AM"
is malformed at "AM"

怎么了?

我正在使用 joda-time:2.8.1

(我已经搜索过了,我认为这是该 strDate 的正确模式)

AM/PM 标记的文本可能与您的默认语言环境不同。你可以做

Date date = 
  DateTime.parse(strDate, DateTimeFormat.forPattern(format).withLocale(Locale.US)).toDate();

取决于区域设置,您可以指定 localetimezone :

这些应该适合你:

DateTime.parse(strDate, DateTimeFormat.forPattern(format).withLocale(Locale.US)).withZone(DateTimeZone.UTC).toDate();

DateTime.parse(strDate, DateTimeFormat.forPattern(format).withLocale(Locale.US)).toDate();