首页 > 解决方案 > 当 CultureInfo 设置为其他语言时,字符串未被识别为有效日期时间

问题描述

我将字符串格式的有效日期时间从前端 aspx 页面传递到后端 aspx.cs 文件。当我传递日期时间字符串时,我得到一个异常,说字符串未被识别为有效的日期时间。下面是我的代码:

if (DOB != "")
{
    DateTime formatDate = 
        DateTime.ParseExact(DOB, "MM-dd-yyyy", 
            System.Globalization.CultureInfo.InvariantCulture);
    
    DOB = formatDate.ToString("yyyy-MM-dd");
}

当我通过日期时间时,我的文化设置为:

Thread.CurrentThread.CurrentCulture = new CultureInfo("es-MX");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-MX");

当我将文化信息设置为“en-US”时,我没有收到“字符串未被识别为有效日期时间”错误,但是一旦我将文化信息设置为“es-MX”,我就会得到这个错误。

下面是我传递给上述代码的日期的屏幕截图:

在此处输入图像描述

这是我得到的错误的屏幕截图:

在此处输入图像描述

我还尝试了 DateTime.Convert 而不是 DateTime.ParseExact,这也引发了同样的错误。

任何帮助或提示将不胜感激。

标签: c#asp.net

解决方案


这是我为解决上述问题所做的:

if (DOB != "")
{
    DOB = DOB.Replace("/", "-");

    DateTime formatDate =
         DateTime.ParseExact(DOB, 
            new string[] { "M-d-yyyy", "dd-MM-yyyy" },
            System.Globalization.CultureInfo.InvariantCulture, 
            System.Globalization.DateTimeStyles.None);

    DOB = formatDate.ToString("yyyy-MM-dd");

}

推荐阅读