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

标签 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);
}

或者两者都不是,但最好采用不同的方式?提前致谢。

最佳答案

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

据我所知,android.text.format.DateFormat 具有 java.text.DateFormat 的一些功能,一些来自 的功能>java.text.SimpleDateFormat,以及它自己的一些额外功能。

最值得注意的是:

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

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

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

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

关于java - SimpleDateFormat 和 android.text.format.DateFormat 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13648019/

相关文章:

javascript - 使用 API json 对象设置动态菜单?

java - 将枚举类型添加到列表

javascript - Stripe - 通过 1 个 HTML 按钮提交 token /创建费用?

php - 如何在 PHP ElasticSearch API 中进行批量删除

java - 如何正确解析 RFC 日期?

Android 减去日期

java - DateFormatSymbol 的行为在 Android 和 JRE 1.7 之间有所不同

java - fragment 选项卡主机有问题 - 它不起作用

java - Jackson:JAX-RS 应用程序中的数组列表包装器

java - 如何在一行中通过特定属性对象Java8将arraylist拆分为多个列表