gpt4 book ai didi

java - SimpleDateFormat 如何依赖于语言环境?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:26 26 4
gpt4 key购买 nike

我经常使用 HH:mm:ssyyyy-MM-dd 等模式创建 SimpleDateFormat,以独立于语言环境的方式输出日期。由于还有一个构造函数采用额外的区域设置参数,我想知道是否存在这种格式可以依赖于区域设置的情况,或者我是否应该始终指定 Locale.ENGLISH 或 Locale.GERMANY。让我们假设时区是明确设置的。

最佳答案

刚刚在 Locale 上找到了 getAvailableLocales 静态方法,事实证明日历的所有字段都可以依赖于 locale:

public static void main(String[] args) {
String pattern = "yyyy-MM-dd HH:mm:ss";
Date date = new Date();
String defaultFmt = new SimpleDateFormat(pattern).format(date);

for (Locale locale : Locale.getAvailableLocales()) {
String localeFmt = new SimpleDateFormat(pattern, locale).format(date);
if (!localeFmt.equals(defaultFmt)) {
System.out.println(locale + " " + localeFmt);
}
}
}

在我的系统上(在德国运行的是英文版的 ubuntu)这会输出以下列表,希望 unicode 字符能完好无损地通过:

ja_JP_JP 23-03-03 16:53:09
hi_IN २०११-०३-०३ १६:५३:०९
th_TH 2554-03-03 16:53:09
th_TH_TH ๒๕๕๔-๐๓-๐๓ ๑๖:๕๓:๐๙

所以 JapanThailand使用不同的纪元,但在其他方面基于 gregorian calendar ,这解释了为什么月和日相同。

其他语言环境也使用不同的脚本来书写数字,例如 Hindi在印度使用,在泰国使用泰语的变体。

要回答这个问题,当需要与语言环境无关的字符串时,应始终将语言环境指定为已知值。

编辑:Java 1.6 添加了一个常量 Locale.ROOT指定语言/国家中立的语言环境。这比为针对计算机的输出指定英语语言环境更可取。

The root locale is the locale whose language, country, and variant are empty ("") strings. This is regarded as the base locale of all locales, and is used as the language/country neutral locale for the locale sensitive operations.

关于java - SimpleDateFormat 如何依赖于语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5174696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com