c# - CultureInfo 根据计算机设置更改

标签 c# .net 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");

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

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

new CultureInfo("en-US");

但结果是一样的。

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

最佳答案

var culture = new CultureInfo("en-US", false);

constructor的第二个参数(useUserOverride) 就是这个意思。

  • 真正使用系统设置
  • false 使用默认文化设置

关于c# - CultureInfo 根据计算机设置更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66804391/

相关文章:

c# - 发送数据到 127.* : Unreachable Host

c# - 线程通信

c# - Entity Framework :Linq查询按原始数据查找条目,但返回对已更改条目的引用

c# - 如何使用 System.Linq.Expressions.Expression 根据 child 进行过滤?

asp.net-mvc - Visual Studio 是否可以始终在源 View 而不是设计 View 中打开 ASP.NET 页面?

asp.net-mvc - 如何向 MVC 应用程序公开内置安全性和用户管理?

c# - .NET 中的套接字未连接

c# - 如何从同一解决方案中的另一个项目获取项目的相对路径?

c# - 将数据模板内的元素绑定(bind)到父属性

.net - Quartz.net:预定的代码在部署后不自动工作,在本地工作