我在项目中使用了以下代码,但"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
请给我一些建议,让它正常工作。
谢谢。
用固定区域性替换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
是每个线程的设置/属性,默认为机器上的用户设置。