DateTime.TryParseExact()由于线程';的文化信息

本文关键字:文化 信息 TryParseExact 于线程 DateTime 线程 | 更新日期: 2023-09-27 18:19:56

我在现有实现中有以下代码行

DateTime.TryParseExact(
    "15/11/2021 00:00:00", 
    "dd/MM/yyyy HH:mm:ss",
    null,
    DateTimeStyles.None,
    out maturityDate);

返回CCD_ 1,表示传递的字符串无法解析。这对我来说真的很奇怪,因为这里的模式似乎很准确。根据MSDN null,第三个参数中的值意味着将使用当前区域性信息(我假设它是Thread.CurrentThread.CurrentCulture)。

监视窗口中的Thread.CurrentThread.CurrentCultureen-US,但区域性信息的实例后来在代码中的某个位置发生了更改(日期-时间格式化程序或其他内容)。

当我通过CultureInfo.InvariantCulturenew CultureInfo("en-US")时,一切正常

有人能说一下null通过时TryParseExact失败的原因吗?类似的问题没有给我任何线索。

DateTime.TryParseExact()由于线程';的文化信息

如果通过false0,将使用CurrentCulture

来自MSDN TryParseExact:文档

如果提供程序为Nothing,则使用与当前区域性相对应的CultureInfo对象。

这意味着,如果当前区域性使用与字符串中不同的日期/时间分隔符,则解析将失败。

2021年11月15日不是有效的美国日期格式。2021年11月15日是。我认为你想要的文化是en-GB