我经常使用类似的模式创建SimpleDateFormat,HH:mm:ss或者yyyy-MM-dd以区域设置独立的方式输出日期.由于还有一个构造函数采用了额外的语言环境参数,我想知道是否存在这样的格式可能依赖于语言环境的情况,或者我是否应该始终指定Locale.ENGLISH或Locale.GERMANY.让我们假设时区是明确设置的.
Jör*_*ann 15
刚刚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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的系统上(在德国运行英文版的ubuntu)这会输出以下列表,让我们希望unicode字符完整无缺:
ja_JP_JP 23-03-03 16:53:09
hi_IN ????-??-?? ??:??:??
th_TH 2554-03-03 16:53:09
th_TH_TH ????-??-?? ??:??:??
Run Code Online (Sandbox Code Playgroud)
所以日本和泰国使用不同的时代,但是否则基于格里高利历,这解释了为什么月和日是相同的.
其他语言环境也使用不同的脚本来编写数字,例如印度的印地语和泰国的泰语变体.
要回答这个问题,当需要区域设置独立的String时,应始终将语言环境指定为已知值.
编辑: Java 1.6添加了一个常量Locale.ROOT来指定语言/国家/地区中性区域设置.这将优先指定针对计算机的输出的英语区域设置.
根区域设置是其语言,国家/地区和变体为空("")字符串的区域设置.这被视为所有语言环境的基本语言环境,并用作区域设置敏感操作的语言/国家/地区中性区域设置.
| 归档时间: |
|
| 查看次数: |
24628 次 |
| 最近记录: |