4

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

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

它返回false意味着无法解析传递的字符串。这对我来说真的很令人惊讶,因为这里的模式似乎是准确的。根据null第三个参数中的 MSDN 值意味着将使用当前的文化信息(我假设它是Thread.CurrentThread.CurrentCulture)。

Thread.CurrentThread.CurrentCulture在监视窗口中是en-US,但是文化信息的实例后来在代码中的某处被更改(日期时间格式化程序或其他东西)。

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

任何人都可以说是什么原因导致TryParseExact这里null通过时失败?类似的问题没有给我任何线索。

4

2 回答 2

7

如果通过nullCurrentCulture将使用 。

来自 MSDN 文档TryParseExact

如果 provider 为 Nothing,则使用与当前区域性对应的 CultureInfo 对象。

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

于 2012-01-11T14:28:55.283 回答
0

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

于 2012-01-11T14:43:16.637 回答