【问题标题】:What is the difference between SimpleDateFormat and android.text.format.DateFormat?SimpleDateFormat 和 android.text.format.DateFormat 有什么区别?
【发布时间】:2012-11-18 20:08:25
【问题描述】:

通过阅读它们,我了解到 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);
}

或者可能两者都没有,但最好的方法是不同的?提前致谢。

【问题讨论】:

    标签: java api simpledateformat android-date


    【解决方案1】:

    我相信答案就在here

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

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

    【讨论】:

      【解决方案2】:

      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 或 long 毫秒,而不需要 Date 对象。我总是更喜欢使用 Calendar 或 long over Date。此外,它正确地尊重日历对象的时区——而从日历中获取日期并将其传递给格式化程序会丢失时区信息。 (没有什么是您无法通过 java DateFormat 的 setCalendar 方法解决的,但不必这样做也很好。)

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

      【讨论】:

        猜你喜欢
        • 2012-01-21
        • 1970-01-01
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        • 2011-02-25
        • 2011-11-22
        相关资源
        最近更新 更多