我有一个奇怪的场景,DateTime.TryParse(..)在两台不同的笔记本电脑之间以MM/dd/yyyy格式返回不同的结果.

代码如下:

var isDateTime = DateTime.TryParse("07/22/2022", new CultureInfo("en-US"), DateTimeStyles.None, out _);

在我的计算机上,上述结果返回false,在另外两台计算机上,相同的语句返回true.我希望它返回true,但我不知道为什么在我的计算机上返回false.有谁能提供一个线索,为什么明确地设置文化对我不起作用?

编辑-这是在Windows 10上的.NET Framework V4.7.2版本上,版本为VS 2022.

推荐答案

在Windows上有CultureInfo.UseUserOverride个属性可能会影响它.您可以try 使用new CultureInfo("en-US", false)来禁用用户覆盖的设置.

此外,更好的替代方法是使用CultureInfo.GetCulture("en-US"),因为它总是返回非用户覆盖版本的CultureInfo,并且它还返回缓存版本,这通常比每次实例化新的CultureInfo都要快.

参考:https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo.-ctor?view=net-6.0#system-globalization-cultureinfo-ctor(system-string-system-boolean)

Csharp相关问答推荐

ß != ss与ICU进行不区分大小写的比较

我可以 suppress 规则CS 9035一次吗?

需要深入了解NpgSQL DateTimeOffset处理

SignalR客户端不会打印队列位置'

MAUI查询参数单一字符串项将不起作用

需要在重新启动ApplicartionPool或IIS后启动/唤醒API的帮助

使用两个不同的枚举作为Switch语句中的CASE生成唯一值

C#和ASP.NET核心标识:提高GetUserAsync调用的性能

为什么C#认为这个非托管 struct 有一个重叠

每个http请求需要60秒,为什么?

当索引和外键是不同的数据类型时,如何设置导航属性?

使用带有参数和曲面的注入失败(&Q;)

Savagger使用Fastendpoint更改用户界面参数

在DoubleClick上交换DataGridViewImageColumn的图像和工具提示

正在从最小API-InvocationConext.Arguments中检索参数的FromBodyAttribute

如何使用ODP.NET C#设置Oracle会话时间长度限制

仅在Blazor Web App中覆盖生产的基本路径(.NET8中的_Hosts.cshtml文件功能?)

获取应用程序版本信息时出现奇怪信息

如何更改Datagridview行标题

这是T自身的布尔表达式是什么意思?