不变的文化

本文关键字:文化 | 更新日期: 2023-09-27 18:24:55

我们正在创建一个应用程序,该应用程序将在全球范围内发布,同时导入和导出不同格式的文件。

我们应该对这些标准文件使用不变区域性。

然而,不变的文化就像EN-US文化一样,而不是真正提供一种标准的国际写作方式。

话虽如此,我想至少改变这种文化的日期格式。但以下代码只是抛出异常:

CultureInfo format = System.Globalization.CultureInfo.InvariantCulture;
format.DateTimeFormat.FullDateTimePattern = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
return format;

让IFormatProvider格式化任何类型的变量,但有一种国际化的日期书写方式,正确的方法是什么?

不变的文化

不变的区域性就是不变的。你不能改变它。

此区域性适用于需要以跨区域可移植的方式保存数据的.NET应用程序。

这并不是为了让用户看到或应该关心这些数据的格式,在看到数据之前,应该始终将其转换为他们的特定区域性。

如果您真的想要这种DateTime格式,您可以开始定义一个新的区域性(如果您愿意,可能基于Invariant区域性)。

var myStandardCulture = (CultureInfo)System.Globalization.CultureInfo.InvariantCulture.Clone();
myStandardCulture.DateTimeFormat.FullDateTimePattern = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
return myStandardCulture;

定义自己的区域性的缺点是,其他试图读取文件的.NET应用程序也需要被告知所有新的区域性规则,而不仅仅是接受.NET 中内置的InvariantCulture规则

真的没有"标准"的写作方式。。。这不是不变文化的含义。大多数格式化方法的默认行为是使用基本操作系统的文化设置,以最适合使用特定计算机的人的方式格式化日期、时间和数字。。。即在运行时。

尝试进入开发计算机上的控制面板并更改本地化设置。例如,在某些文化中,他们使用。作为千位分隔符,作为十进制分隔符。

强迫"一种国际"的做事方式会让他们感到困惑,因为他们不习惯看到我们每天认为的标准。

日期是混乱的另一个很好的例子,因为世界上许多地区的标准化日期是DD-MM-YYYY,而不是像我们国家那样的MM-DD-YYYY。