字符串未被识别为有效的日期时间.在Windows Server 2012上使用ParseExact

本文关键字:2012 Server Windows ParseExact 时间 识别 有效 日期 字符串 | 更新日期: 2023-09-27 18:14:00

我正在尝试使用"en-CA"区域性信息解析字符串到日期。它在Windows Server 2008 R2上工作正常,但在Windows Server 2012中显示异常:-字符串未被识别为有效的日期时间。

代码段如下:-

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

字符串未被识别为有效的日期时间.在Windows Server 2012上使用ParseExact

/在这里简单地表示"日期分隔符"(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

(很抱歉美国格式的最终日期)