CultureInfo 根据计算机设置而变化

Cam*_*ell 4 .net c# asp.net-mvc datetime asp.net-core

我正在本地计算机和远程服务器上通过 IIS 运行 .NET 5 MVC Web 应用程序。

我注意到一个奇怪的错误,计算机的本地设置似乎会影响课程的CultureInfo结果

在Windows 10中,如果我打开Settings > Time & Language > Region,然后单击Change data formats使我的短时间为24小时,即13:40 vs 1:40 PM,那么结果CultureInfo也会改变。我一直认为更改计算机设置不会影响不同文化中内置的 .NET,并且无论代码在哪台计算机上运行,​​它们都应该是相同的,因此:

CultureInfo.CreateSpecificCulture("en-US");
Run Code Online (Sandbox Code Playgroud)

CultureInfo无论代码在哪台计算机上运行或者用户决定使用什么日期和时间设置,都应该返回相同的对象。

我最初想知道我是否使用了CultureInfo错误的类,所以我也尝试了:

new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)

但结果是一样的。

有没有什么方法可以告诉CultureInfo全班使用文化的默认值,而不是使用我计算机上当前的设置?

小智 6

var culture = new CultureInfo("en-US", false);
Run Code Online (Sandbox Code Playgroud)

构造函数的第二个参数(useUserOverride)正是这个意思。

  • 真正使用系统设置
  • false 使用默认区域性设置