我发现java.text.DateFormat有2种格式化日期的方法。一个采用日期参数,另一个采用对象参数。我检查了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
有人有什么想法吗?谢谢。
关系。format(Object)
是基本Format
接口的一部分; DateFormat
还提供了清晰的format(Date)
。
最终,format(Object)
版本调用DateFormat.format(Object, StringBuffer, FieldPosition)
,该将从源中按顺序尝试以下操作:
- 如果对象是
Date
,则强制转换为Date
并执行与format(Date)
相同的转换。 - 如果对象是
Number
,则构造一个new Date(((Number)object).longValue())
然后格式化它。 - 否则,抛出
IllegalArgumentException
.
第一点使format(Object)
与对象为Date
时的format(Date)
相同。
在您的情况下,由于日期是一个Object
,我只会使用format(Object)
,因为它不那么冗长,format(Object)
会为您进行演员表。
你的 WAY1 方法来自DateFormat
类,WAY2 方法来自Format
类(DateFormat
的祖先)。我认为两种方式都从DateFormat
调用格式方法,因此两种方式都是等效的。