Date.format(Date) vs. Date.format(Object)



我发现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调用格式方法,因此两种方式都是等效的。

最新更新