DateTime.TryParse 在不同机器上的工作方式不同

Pri*_*hiv 1 c# datetime date cultureinfo winforms

我在我的项目中使用以下代码,但“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);
}
Run Code Online (Sandbox Code Playgroud)

我还按照下面的文章尝试了“DateTime.TryParseExact”,但没有用。 https://github.com/dotnet/runtime/issues/25120

请向我提出任何想法以使其正常工作。

谢谢。

mm8*_*mm8 5

替换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);
}
Run Code Online (Sandbox Code Playgroud)

CultureInfo.CurrentCulture是每线程设置/属性,默认为计算机上的用户设置。