【发布时间】:2012-08-13 13:19:19
【问题描述】:
我正在解析 ASP.NET WebForms 页面中的 DateTime 值,并且日期字符串不断被 DateTime.TryParseExact() 方法拒绝,即使它明显匹配提供的格式字符串之一。
它似乎在我在家的开发机器上失败,但在生产服务器上工作,所以我正在考虑涉及本地日期设置,但即使我提供 IFormatProvider (CultureInfo) 对象作为参数也会出现此错误
代码如下:
DateTime startDate;
string[] formats = { "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy",
"dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy"};
var errStart = row.FindControl("errStartDate"); //my date format error message
if (!DateTime.TryParseExact(txtStartDate.Text, formats, null, DateTimeStyles.None, out startDate))
{
errStart.Visible = true; //we get here even with a string like "20/08/2012"
return false;
}
else
{
errStart.Visible = false;
}
注意我在上面给出了一个null FormatProvider,但是当我提供一个CultureInfo 对象时会出现同样的问题
(CultureInfo provider = new CultureInfo("en-US")) 这个参数。
我错过了什么?
【问题讨论】:
-
在美国文化中,日期格式是 m/d/y 而不是 d/m/y
-
即使没有提到 FormatProvider,这段代码对我来说似乎也能正常工作。尝试指定 InvariantCulture。
标签: c# .net cultureinfo