在我的机器上运行并输出以下内容
string locale = "nb-NO";
CultureInfo culture = CultureInfo.CreateSpecificCulture(locale);
string shortDateFormatString = culture.DateTimeFormat.ShortDatePattern;
string shortTimeFormatString = culture.DateTimeFormat.ShortTimePattern;
我得到以下输出
shortDateFormatString "dd.MM.yyyy"
ShortTimePattern "HH:mm"
但是在dotnetfiddle.net上,我得到了以下内容
shortDateFormatString "dd.MM.yyyy"
ShortTimePattern "HH.mm"
我想C#使用CLDR,所以根据 https://github.com/unicode-cldr/cldr-dates-full/blob/1af902b749bef761f07281f80241250053b4313d/main/nb/ca-gregorian.json#L323
两个短时间模式都应该有效。 在dotnetfiddle上,可以解析nb-NO datetime,如下所示
06.12.2017 12:34
06.12.2017 12.34
但是在我的机器上的VS2019中,只能解析
06.12.2017 12:34
怎么可能与众不同?两者都使用.NET 4.7.2。
查看我的小提琴答案 0 :(得分:1)
怎么可能与众不同?
因为区域性信息是从操作系统加载的,并且会随时间而变化。除非两台计算机完全相同的Windows版本(相同的更新,修复程序等)都在Windows上,否则它们对于诸如短时间模式之类的值完全可能具有不同的值。 (是的,这很烦人,但这是生活的一部分。)
答案 1 :(得分:0)
乔恩说得很对(对!)
文化设置很棘手。由于它们存储在Windows注册表中,因此它们可以是不同的/可以在.net Framework版本,操作系统版本,Windows更新,修补程序等上进行更改。这意味着,即使两个服务器都使用相同的.NET Framework版本,也不意味着两者的每种文化设置都相同。
例如,我可以向您展示it-IT
的文化。
请参阅:.NET (3.5) formats times using dots instead of colons as TimeSeparator for it-IT culture?
对于.NET Framework 3.5,it-IT
文化具有.
作为TimeSeparator
,但是在.NET Framework 4.0版本中,它已更改为:
,这在Wikipedia上已有说明。
这种变化当然不是世界的尽头,但也不是令人满意的。