【问题标题】:Java equivalent for CultureInfo.InvariantCulture Property in C#C# 中 CultureInfo.InvariantCulture 属性的 Java 等效项
【发布时间】:2015-04-21 07:31:57
【问题描述】:

是的,我是 java 新手,这个问题在 stackoverflow 的其他一些链接中被问到(Java equivalent of Invariant Culture)。但仍然没有结论表明,

  1. java 中没有类似的方法可以做到这一点
  2. 还有一个选择

下面的语句在java中会做什么。

Locale invariant = new Locale("","","");

我对上面的语句很感兴趣,因为在 C# 中,下面的代码会带来 Invariant 文化设置。

CultureInfo Invc = New CultureInfo("");

我想知道这是否可能在 java 中具有不变的文化设置,是否有可能通过任何解决方法或如何在具有独立文化设置的 Java 中编写代码。下面的 MSDN 引用说明了独立文化设置的必要性。

以与文化无关的格式存储数据可确保已知格式 这不会改变。当来自不同文化的用户访问 数据,可以根据特定用户进行适当的格式化。为了 例如,如果您的应用程序将 DateTime 类型存储在文本文件中, 为不变的文化格式化,应用程序应该使用 调用 ToString 存储字符串时的 InvariantCulture 属性 和 Parse 方法来检索字符串。该技术确保 DateTime 类型的基础值不会改变 数据由来自不同文化背景的用户读取或写入。

【问题讨论】:

  • 语言环境涵盖了许多与 C# 中的 CultureInfo 相同的功能。据我所知,它没有“不变”版本。数据以默认格式存储(例如自 1970 年以来以毫秒为单位的时间,或以固定区域性/区域设置形式存储,例如 YYYY-mm-dd hh:mm:ss 在使用特定区域设置读取和写入时解析) .我怀疑 c# 的“不变”文化秘密地将其写为 locale US_en,因此您可以根据需要使用该语言环境。
  • 据我所知,C# 中的“en-US”文化和 Invariant 文化之间存在一些差异。代码double value = 12345.6789;Console.WriteLine(value.ToString("C", CultureInfo.CreateSpecificCulture("en-US")));Console.WriteLine(value.ToString("C", CultureInfo.InvariantCulture));产生不同的结果

标签: java .net


【解决方案1】:

比较Locale.ROOT:

根区域设置是其语言、国家和变体为空 ("") 字符串的区域设置。这被视为所有区域设置的基本区域设置,并用作区域设置敏感操作的语言/国家中立区域设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2015-10-23
    相关资源
    最近更新 更多