SimpleDateFormat和android.text.format.DateFormat有什么区别?

时间:2012-11-30 15:19:59

标签: java api simpledateformat android-date

从阅读它们我了解到android类是一个仅为方便起见而设计的实用程序类,并且不提供SimpleDateFormat不提供的任何内容。 android类有什么意义吗?使用它是否更好(如果是,为什么)?我的目标是在Android应用程序中显示Date对象(显然)。这是:

private Date date;

public String getDateString(String formatStr){
    return new SimpleDateFormat(formatStr).format(date);
}

最好像这样使用android.text.format.DateFormat:

public String getDateString(String formatStr){
    return android.text.format.DateFormat.format(formatStr, date);
}

或者两者中没有一个,但不同的方式最好?提前谢谢。

2 个答案:

答案 0 :(得分:3)

https://stackoverflow.com/a/27116266/642160复制我的答案:

据我所知,android.text.format.DateFormat具有java.text.DateFormat的部分功能,java.text.SimpleDateFormat的部分功能,以及自身的一些额外功能。

最值得注意的是:

  • java SimpleDateFormat允许构造任意非本地化格式。
  • java DateFormat允许通过工厂方法为日期和时间构建三种本地化格式。
  • android DateFormat允许上述大部分内容(任意格式和较少数量的本地化格式),但也提供getBestDateTimePattern,它选择一个适合语言环境的格式字符串,其中包含使用适合语言环境的顺序指定的元素和标点符号。

因此,如果您需要一个本地日期/时间格式而不是java的DateFormat类提供的三种格式,那么android DateFormat类就是解决方案。

不太重要,但是额外的便利:android DateFormat方法可以直接使用Calendar或长毫秒,而不需要Date对象。我总是喜欢使用日历或长期使用日期。此外,它正确地尊重Calendar对象的时区 - 而从日历获取日期并将其传递给格式化程序会丢失时区信息。 (你无法通过java DateFormat的setCalendar方法解决这个问题,但是没有必要这么做。)

最后,最不重要的是,Android DateFormat的一些方法实际上并不构造格式化程序,只需构造一个格式字符串即可。所有这个类的方法都是静态的。构造DateFormat的方法确实构造了一个java DateFormat!

答案 1 :(得分:1)

我相信答案在于here

  

此类的工厂方法返回适当的本地化DateFormat   实例,适用于格式化和解析日期。

我认为SimpleDateFormat不提供适当的本地化格式。