DateTime.TryParse работает по-разному на разных машинах - PullRequest
0 голосов
/ 09 апреля 2020

Я использую следующий код в своем проекте, но «DateTime.TryParse» дает разные результаты на разных машинах. Метод IsDate возвращает «False» на моем компьютере и возвращает «True» на другом компьютере.

if(IsDate("30/03/2020 04:00",out dt))
{
}

private bool IsDate(object o, out DateTime date)
{
    return DateTime.TryParse(o.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out date);
}

Я также пытался использовать «DateTime.TryParseExact», как показано в статье ниже, но бесполезно. https://github.com/dotnet/runtime/issues/25120

Пожалуйста, предложите мне любые идеи, чтобы заставить его работать должным образом.

Спасибо.

1 Ответ

4 голосов
/ 09 апреля 2020

Замените CultureInfo.CurrentCulture фиксированной культурой, как, например, CultureInfo.InvariantCulture:

private bool IsDate(object o, out DateTime date)
{
    return DateTime.TryParse(o.ToString(), System.Globalization.CultureInfo.InvariantCulture, 
        DateTimeStyles.None, out date);
}

CultureInfo.CurrentCulture - это параметр / свойство для каждого потока, который по умолчанию соответствует пользовательским настройкам на машине.

...