刚刚
getAvailableLocales在Locale上找到了静态方法,结果表明日历的所有字段都可以依赖于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的英语版本),这输出以下列表,希望unipre字符完整无缺:
ja_JP_JP 23-03-03 16:53:09hi_IN २०११-०३-०३ १६:५३:०९th_TH 2554-03-03 16:53:09th_TH_TH ๒๕๕๔-๐๓-๐๓ ๑๖:๕๓:๐๙
因此,日本和泰国使用了不同的纪元,但它们是基于公历的,这解释了为什么月和日相同。
其他语言环境也使用不同的脚本来写数字,例如印度语中的北印度语和泰国语中的泰语变体。
为了回答这个问题,当需要与语言环境无关的String时,应该始终将语言环境指定为一个已知值。
编辑: Java
1.6添加了一个常量Locale.ROOT来指定语言/国家/地区的中性语言环境。这将比为计算机输出指定英语语言环境更好。
根语言环境是其语言,国家/地区和变体为空(“”)字符串的语言环境。这被视为所有语言环境的基本语言环境,并用作对语言环境敏感的操作的语言/国家/地区中性语言环境。



