java.text.SimpleDateFormat毕竟是java.text.DateFormat的一个实现。 DateFormat的这种实现可以理解以下模式字母
G Era designator
y Year
M Month in year
w Week in year
W Week in month
D Day in year
d Day in month
F Day of week in month
E Day in week
a Am/pm marker
H Hour in day (0-23)
k Hour in day (1-24)
K Hour in am/pm (0-11)
h Hour in am/pm (1-12)
m Minute in hour
s Second in minute
S Millisecond
z Time zone
Z Time zone
是否有其他java.text.DateFormat实现,可以理解其他一些模式字母组?如果有的话,请告诉我。
答案 0 :(得分:2)
java.text.SimpleDateFormat
是唯一公开的JDK类,它扩展了java.text.DateFormat
;但是,无法保证DateFormat
的工厂方法(例如getDateInstance()
)必须返回java.text.SimpleDateFormat
。他们可以返回JDK实现提供的其他类的实例。 (即使在那种情况下,我也不确定其他课程会“理解其他一些模式字母组”,正如你所建议的那样;相反,我会猜测这将更有可能发生如果locale具有日期解析和格式化需求,这些需求比简单文本模式可以提供的更复杂,而不是区域设置需要不同的模式。但谁知道呢?)
正如the Javadoc for java.text.DateFormat
所说:
如果您想要更多地控制格式或解析,(或者希望为您的用户提供更多控制权),您可以尝试将从工厂方法获得的
DateFormat
转换为SimpleDateFormat
。这将适用于大多数国家;只要记住将它放在try
块中,以防遇到异常情况。
如果需要,您可以使用自己的日期格式化子类扩展DateFormat
。它的构造函数是protected
,而不是包私有,所以你可以自由地对它进行子类化。
答案 1 :(得分:0)
IBM's ICU project中有java.text.SimpleDateFormat
替换课程。你可以看一下。但这只是一个替代课程,与java.text.SimpleDateFormat
课程无关。