【问题标题】:What is the difference between android.text.format.DateFormat and java.text.DateFormatandroid.text.format.DateFormat 和 java.text.DateFormat 有什么区别
【发布时间】:2012-01-21 16:56:05
【问题描述】:

我在android上阅读了一些关于格式化日期的帖子,如下所示:

How do you format date and time in Android?

人们建议使用android.text.format.DateFormat 而不是java.text.DateFormat

这里还提到了在android中将日期转换为字符串时的一个问题:

Android load timezone too long: Loaded time zone names for en_US

我想知道android.text.format.DateFormatjava.text.DateFormat 有什么区别?

【问题讨论】:

    标签: android date format


    【解决方案1】:

    据我所知,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!

    【讨论】:

    • 这应该是公认的答案。它至少试图回答问题,而不是狡猾地链接到在线文档。恕我直言,“阅读文档”不应该是一个公认的答案。
    • 我很乐意删除我旧的、蹩脚的答案,但 SO 不允许您删除已接受的答案。
    【解决方案2】:

    在这里进行一些自助怎么样?比较 API,阅读 JavaDocs 并亲自查看:

    【讨论】:

    • 一位智者曾经告诉我:“给一个人一把火,他会在余下的夜晚保持温暖。让一个人着火,他会温暖他的余生。”
    • 这是您早期的回答吗?
    • 真正的引语是:“为人生火,他会温暖一天。让一个人着火,他会温暖他的余生。”
    猜你喜欢
    • 2012-11-18
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    • 2015-03-26
    相关资源
    最近更新 更多