我发现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.
请注意,对于方式 1,我将 dateObject 转换为 java.util.Date
有人有什么想法吗?谢谢。
最佳答案
没关系。 format(Object)
是基本 Format
接口(interface)的一部分;为了清楚起见,DateFormat
还提供了 format(Date)
。
最终,format(Object)
版本调用 DateFormat.format(Object, StringBuffer, FieldPosition)
,来自 the source ,将按顺序尝试以下操作:
- 如果对象是
Date
,则转换为Date
并执行与format(Date)
相同的转换。 - 如果对象是
Number
,则构造一个new Date(((Number)object).longValue())
,然后对其进行格式化。 - 否则,抛出
IllegalArgumentException
。
当对象是Date
时,第一点使得format(Object)
与format(Date)
相同。
就您而言,由于 date 是一个 Object
,我只需使用 format(Object)
因为它不太冗长,并且 format(Object)
将为您进行转换。
关于java - Date.format(Date) 与 Date.format(Object),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22846281/