当前位置: 首页 > 面试题库 >

SimpleDateFormat对语言环境的依赖性如何?

石臻
2023-03-14
问题内容

我经常使用类似模式创建SimpleDateFormat,HH:mm:ssyyyy-MM- dd以与语言环境无关的方式输出日期。由于也有一个构造函数带有附加的语言环境参数,所以我想知道是否存在这种格式可以依赖于语言环境的情况,还是我应该始终指定Locale.ENGLISH或Locale.GERMANY。假设时区已明确设置。


问题答案:

刚刚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的英语版本),这输出以下列表,希望unicode字符完整无缺:

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

因此,日本和泰国使用了不同的纪元,但它们是基于公历的,这解释了为什么月和日相同。

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

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

编辑: Java
1.6添加了一个常量Locale.ROOT来指定语言/国家/地区的中性语言环境。这将比为计算机输出指定英语语言环境更好。

根语言环境是其语言,国家/地区和变体为空(“”)字符串的语言环境。这被视为所有语言环境的基本语言环境,并用作对语言环境敏感的操作的语言/国家/地区中性语言环境。



 类似资料:
  • 问题内容: 我试图根据给定的语言环境以不同的方式格式化Java中的日期。例如,我希望英语用户看到“ 2009年11月1日”(格式为“ MMM d,yyyy”),而挪威用户希望看到“ 1. nov。2009”(“ d。MMM。yyyy”)。 如果将语言环境添加到SimpleDateFormat构造函数中,则月份部分工作正常,但是其余部分呢? 我希望可以将与语言环境配对的格式字符串添加到SimpleD

  • 问题内容: 我用来将货币从BigDecimal格式化为字符串。按预期工作,问题在于我们的主要目标是荷兰市场,而默认的荷兰格式很奇怪。 让我解释一下,当格式化-125时,荷兰语将得到“€125-”(预期为“-€125”)。英国按预期方式提供“-£125.50”。 我可以检查语言环境是否为荷兰语,然后在每次我要设置小数格式时都提供一个模式。但是我更喜欢一个解决方案,它可以覆盖荷兰的格式设置。我在考虑以

  • 问题内容: 首先一些背景: 我正在研究一些基于Apache Sling的 webapp原型代码,该代码基于OSGI并在Apache Felix上运行。尽管我认为到目前为止我已经掌握了大多数概念,但我对OSGI还是比较陌生。但是,令我感到困惑的是,我找不到一个“完整的”依赖项注入(DI)框架。我已经使用声明式服务(DS)成功地使用了基本的DI。但是我的理解是DS可以用作参考- 我该如何处理?-OSG

  • 环境依赖 hiredis(redis异步库) redis mysql php >5.6 或者 php > 7.0 swoole >=1.9.17(建议升级到最新版本) (在编译swoole时加入—enable-async-redis,开启异步redis客户端, —enable-openssl开启openssl支持,—with-openssl-dir指定你的openssl目录) 注:openssl是

  • 问题内容: 我在Edittext的addTextChangedListener方法中已自定义,一切正常,但是当我更改语言(语言环境)时,我的addTextChangedListener无法正常工作。 我搜索了我的问题并找到了解决方案: 但我不知道如何使用此代码。 问题答案: 您可以尝试先转换为,然后将其投射到

  • 主要内容:使用DartPad在线执行脚本,设置本地环境,IDE支持,dart2js工具本章讨论在Windows平台上为Dart设置执行环境。 使用DartPad在线执行脚本 可以使用 https://dartpad.dartlang.org/ 上的在线编辑器在线运行测试脚本。Dart编辑器执行脚本并显示HTML和控制台输出。在线编辑器附带一组预设代码示例。 Dartpad编辑器的截图如下 - Dartpad还可以以更严格的方式进行编码。通过检查编辑器右下角的强模式选项来实现。强模式