在我的机器上运行并输出以下内容
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。
你可以在这里检查我的小提琴https://dotnetfiddle.net/68DDYz
怎么可能有所不同?
因为文化信息是从操作系统加载的,并且随着时间的推移而变化。除非两台机器在完全相同的Windows版本(同一组更新,修补程序等)上,否则它们完全有可能为短时间模式等事物设置不同的值。 (是的,这很烦人,但这是生活的一部分。)
乔恩是对的(呃!)
文化设置很棘手。由于它们存储在Windows注册表中,它们可以是不同的/更改.net框架版本,操作系统版本,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上有说明。
这种变化当然不是世界末日,但也不愉快。