DateTime.trarseExact () не удается из -за информации о культуре потока
-
27-10-2019 - |
Вопрос
У меня есть следующая строка кода в существующей реализации
DateTime.TryParseExact(
"15/11/2021 00:00:00",
"dd/MM/yyyy HH:mm:ss",
null,
DateTimeStyles.None,
out maturityDate);
который возвращается false
Это означает, что пропущенная строка не может быть проанализирована. Это было действительно удивительно для меня, потому что шаблон здесь кажется точной. Согласно MSDN null
значение в третьем параметре означает, что текущая информация о культуре будет использоваться (я предполагаю, что это Thread.CurrentThread.CurrentCulture
).
Thread.CurrentThread.CurrentCulture
В окне часов en-US
, но экземпляр информации о культуре был изменен где -то в коде позже (форматеры даты времени или что -то еще).
Когда я прохожу CultureInfo.InvariantCulture
или же new CultureInfo("en-US")
все нормально.
Может ли кто -нибудь сказать, что вызывает неудачу TryParseExact
Здесь когда null
передается? Аналогичные вопросы не давали мне подсказки.
Решение
Если вы пройдете null
, CurrentCulture
будет использован.
Из документации MSDN для TryParseExact
:
Если поставщик ничего не является, используется объект CultureInfo, который соответствует текущей культуре.
Это означает, что если текущая культура - это то, что использует различные сепараторы даты/времени, чем в вашей строке, Parse потерпит неудачу.
Другие советы
15/11/2021 не является действительным форматом даты США. 15.11.2021 IS. я считать культура, которую вы хотите en-GB