我发现 java.text.DateFormat 有两种格式化日期的方法。一个是Date参数,另一个是Object参数。我检查了DateFormat源代码,似乎他们调用了不同的内部方法。
我的问题是我应该使用哪种方法(方式)格式化日期?方式1对方式2
这是我的代码:
Object dateObject; // This is an instance of java.util.Date
DateFormat df = this.createDateFormat();
String formatted1 = df.format ( (Date) dateObject ); // WAY 1
String formatted2 = df.format ( dateObject ); // WAY 2 -- Calling different internal method.
注意,对于WAY 1,我将dateObject强制转换为java.util.Date
任何人都有任何想法?感谢。
答案 0 :(得分:1)
没关系。 format(Object)
是基础Format
界面的一部分;为了清晰起见,DateFormat
还提供format(Date)
。
最终,format(Object)
版本调用DateFormat.format(Object, StringBuffer, FieldPosition)
,the source将按顺序尝试以下内容:
Date
,则转为Date
并执行与format(Date)
相同的转换。Number
,请构建new Date(((Number)object).longValue())
,然后格式化。IllegalArgumentException
。当对象为format(Object)
时,第一个点使format(Date)
与Date
相同。
在您的情况下,由于日期为Object
,我只会使用format(Object)
,因为它不那么冗长,而format(Object)
会为您执行投射。
答案 1 :(得分:0)
您的WAY1方法来自DateFormat
类,WAY2方法来自Format
类(祖先的DateFormat
)。我认为两种方式都会调用DateFormat
格式的方法,因此两种方式都是等效的。