SimpleDateFormat 仅限于预定义的日期

SimpleDataFormat is restrict to predefiend dates

我正在执行此代码:

SimpleDateFormat df = new SimpleDateFormat("MMMM dd, yyyy hh:mmaa");
df.setTimeZone(TimeZone.getTimeZone("America/New_York"));
Date parsedDate = df.parse("Dec 19, 2011 2:37pm");

结果:

java.text.ParseException: Unparseable date: "Dec 19, 2011 2:37pm"

据我所知:

Dec 19, 2011 2:37pm

year -> yyyy -> 2011
month -> MMM -> Dec
day in month -> d -> 2
a -> AM/PM -> pm
minute -> mm -> 37
Hour (1-12, AM/PM) -> h -> 3

格式有什么问题?

MMMM - 整月 ("December")

MMM - 短月 ("Dec")

h - 12 小时制的短时制 (2)

hh - 12 小时制的 2 位小时格式 (02)

并且 始终 在创建 SimpleDateFormat 实例时使用语言环境:

SimpleDateFormat df = new SimpleDateFormat("MMM d, yyyy h:mmaa", Locale.US);

您必须指定语言环境:

SimpleDateFormat df = new SimpleDateFormat("MMMM dd, yyyy hh:mmaa", Locale.US);

因为月份名称取决于它。