除了java.text.SimpleDateFormat之外,还有java.text.DateFormat的其他任何实现

时间:2013-02-06 05:41:51

标签: java simpledateformat jdk1.6 date-format

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实现,可以理解其他一些模式字母组?如果有的话,请告诉我。

2 个答案:

答案 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课程无关。