字符串未被识别为有效的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
(抱歉美国格式化了最终日期。)