字符串未被识别为有效的DateTime。 在Windows Server 2012上使用ParseExact

我正在尝试使用“en-CA”文化信息将字符串解析为日期。 它在Windows Server 2008 R2上运行正常,但在Windows Server 2012中显示exception: – 字符串未被识别为有效的DateTime。

以下是代码段: –

DateTime tvDefaultDate = DateTime.ParseExact("31/12/9999", "dd/MM/yyyy", new CultureInfo("en-CA")); 

/这里简单地表示“日期分隔符”( DateTimeFormatInfo.DateSeparator ),与数字相同,表示“千位分隔符”(不是逗号),和. 表示“小数分隔符”(不是句点)。

在en-CA中,分隔符字符映射到- ; 日期需要是31-12-9999 。 要使用文字/而不是日期分隔符,您需要转义它:

 DateTime tvDefaultDate = DateTime.ParseExact("31/12/9999", @"dd\/MM\/yyyy", new CultureInfo("en-CA")); 

或者,使用不变文化代替; 不变文化使用/作为日期分隔符。

IFormatProvider不需要文化,只需传递null

 DateTime tvDefaultDate = DateTime.ParseExact("31/12/9999", "dd/MM/yyyy", CultureInfo.InvariantCulture); Console.WriteLine(tvDefaultDate); 

输出:

 12/31/9999 12:00:00 AM 

(抱歉美国格式化了最终日期。)