c# - 当 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,这也引发了同样的错误。
任何帮助或提示将不胜感激。
解决方案
这是我为解决上述问题所做的:
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");
}
推荐阅读
- python - 在 TensorFlow 中设置循环神经网络时出现值错误
- docker - Gitlab-runner:在 root 中找不到 docker 或 docker-compose,但它们已经安装
- c# - 从 c# json 响应中删除双反斜杠
- java - 带有透明操作栏的导航抽屉
- kubernetes - 节点资源不足:临时存储
- reactjs - 为什么我没有在屏幕上看到任何东西?
- javascript - Node.js 内存管理
- azure - 错误 - https://graph.microsoft.com/v1.0/me 上的 AccessDenied
- firebase - 颤振,FieldValue.removeArray() 不起作用
- python - Python无限级数收敛和发散