我正在尝试显示日期和时间,包括根据用户的区域设置格式化的秒数。因此,如果一个 Action 发生在 2020 年 3 月 5 日 14:47:51,在美国它应该显示为 03/05/2020 14:47:51
而在英国则为 05/03/2020 14:47:51
, 在波兰 05.03.2020, 14:47:51
, 在捷克 5.3.2020 14:47:51
等等
我可以通过以下方式在几秒钟内显示它:
DateUtils.formatDateTime(
context,
event.time,
DateUtils.FORMAT_24HOUR or DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_YEAR or DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NUMERIC_DATE
)
但是没有常数来显示秒数。请问有什么想法吗?
最佳答案
java.time
DateTimeFormatter localizedFormatter = DateTimeFormatter
.ofLocalizedDateTime(FormatStyle.SHORT, FormatStyle.MEDIUM);
ZonedDateTime dateTime = ZonedDateTime
.of(2020, 3, 5, 14, 47, 51, 123456789, ZoneId.systemDefault());
System.out.println(dateTime.format(localizedFormatter));
我的桌面 Java 11 从 CLDR, the Unicode Common Locale Data Repository 获取其语言环境数据,默认使用 as of Java 9 。这些数据在所有情况下都不符合您的期望。不同语言环境的输出为:en-US 3/5/20, 2:47:51 PM
en-GB 05/03/2020, 14:47:51
pl-PL 05.03.2020, 14:47:51
cs-CZ 05.03.20 14:47:51
在 Java 12 at IdeOne.com 上实时查看此运行。但是,Android 上的输出可能会有所不同,如果您没有得到满意的结果,请自行查看。
两个参数
DateTimeFormatter.ofLocalizedDateTime()
一个参数用于日期样式,一个参数用于时间样式。每个都可以是短的、中的、长的或完整的。问:java.time 不需要 Android API 26 级吗?
java.time 在较旧和较新的 Android 设备上都能很好地工作。它只需要至少 Java 6 。
org.threeten.bp
导入日期和时间类。 链接
java.time
。 java.time
到 Java 6 和 7 的反向移植(JSR-310 的 ThreeTen)。 关于java - 使用用户的区域设置时用秒格式化日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63039870/