CultureInfo nb-NO在VS2019和dotnetfiddle.net上的DateTime.TryParse差异

问题描述 投票:0回答:2

在我的机器上运行并输出以下内容

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

c# datetime cultureinfo
2个回答
1
投票

怎么可能有所不同?

因为文化信息是从操作系统加载的,并且随着时间的推移而变化。除非两台机器在完全相同的Windows版本(同一组更新,修补程序等)上,否则它们完全有可能为短时间模式等事物设置不同的值。 (是的,这很烦人,但这是生活的一部分。)


0
投票

乔恩是对的(呃!)

文化设置很棘手。由于它们存储在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上有说明。

这种变化当然不是世界末日,但也不愉快。

© www.soinside.com 2019 - 2024. All rights reserved.