Date.format(Date)与Date.format(Object)

时间:2014-04-03 18:44:39

标签: java date-format simpledateformat

我发现 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

任何人都有任何想法?感谢。

2 个答案:

答案 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格式的方法,因此两种方式都是等效的。