android.text.format.DateFormat 和 java.text.DateFormat 有啥区别
Posted
技术标签:
【中文标题】android.text.format.DateFormat 和 java.text.DateFormat 有啥区别【英文标题】: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.DateFormat
和java.text.DateFormat
有什么区别?
【问题讨论】:
【参考方案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 并亲自查看:
java.text.DateFormat
android.text.format.DateFormat
【讨论】:
一位智者曾经告诉我:“给一个人一把火,他会在余下的夜晚保持温暖。让一个人着火,他会温暖他的余生。” 这是您早期的回答吗? 真正的引语是:“为人生火,他会温暖一天。让一个人着火,他会温暖他的余生。”以上是关于android.text.format.DateFormat 和 java.text.DateFormat 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章