提问人:chrylis -cautiouslyoptimistic- 提问时间:11/14/2023 更新时间:11/14/2023 访问量:31
如何使用 Android 设备区域设置设置日期/时间的格式?
How do I format date/time using Android device locale?
问:
我在 Android 中使用该包,我想根据用户的设备设置格式化。我尝试了我的默认格式,但无论设备的设置如何,它们始终使用固定格式(例如,即使手机设置为 12 小时,也始终使用 24 小时格式)。java.time
ZonedDateTime
DateTimeFormatter.ofLocalizedDateTime/ofLocalizedTime
如何获得尊重用户设备首选项的设备?java.time.format.DateTimeFormatter
关于在 Android 上格式化本地化日期的 SO 上有很多问题,但所有答案要么参考旧版 API,要么忽略设备的设置。Date
答:
如您所见,它不遵循用户自己的本地化详细信息设置,例如 12/24 小时制。DateTimeFormatter.ofLocalized…
CLDR的
相反,该类利用一组特定的本地化规则。
在较旧的 Java 中,捆绑了一组有限的本地化规则。相比之下,现代 Java 捆绑了 Unicode 联盟发布的详细本地化规则,即通用语言环境数据存储库 (CLDR)。起初,CLDR 在 Java 中是次要用途。在 Java9+ 中,CLDR 是本地化规则的缺省源。
我不知道 Android 使用什么作为其本地化规则的来源。
影响输出
我可以理解想要更改本地化输出。例如,许多本地化格式使用两位数的年份,我发现这在业务中引起了各种混乱。我想覆盖本地化格式化的一个方面,始终使用四位数的年份。
影响本地化输出的一种方法是指定子区域性。CLDR 定义了其中的许多内容。
也许你可以从 .然后用于覆盖方面。这仅仅是猜测;我没有尝试过。DateTimeFormatter
DateTimeFormatter.ofLocalized…
DateTimeFormatterBuilder
评论
android.
SimpleDateFormatter
评论