大家好,
在此之前,我在装有 Microsoft Window XP 的虚拟机中有一个 c# 系统。我有一些代码可以将字符串转换为日期时间,以下是我的部分代码:
DateTime allowDateTime = DateTime.Now.AddMonths(-2);
string formatted = allowDateTime.ToString("M/dd/yyyy");
DateTime dt = Convert.ToDateTime(formatted);
if (redempDateConvert < dt)
td.Text = "";
到目前为止,一切正常。 在那之后,我移动了我所有的源代码而不做任何更改,并在我的真实机器(Window 7)中设置了数据库。
系统运行良好,我仍然可以像往常一样登录和控制系统。
直到今天,我已经到达这部分,浏览器显示错误消息:
String 未被识别为有效的 DateTime。
第 397 行。
这里我再次展示了我的代码(附有解释):
DateTime allowDateTime = DateTime.Now.AddMonths(-2);
string formatted = allowDateTime.ToString("M/dd/yyyy");
DateTime dt = Convert.ToDateTime(formatted); //here is line 397, which is the error happening.
if (redempDateConvert < dt)
td.Text = "";
我已经检查了两个(VM 和我的真实机器)环境,都在 .Net 4.0 中运行。
只是好奇为什么同样的代码,在我的真机上却出现错误。是我错过了配置什么吗? 请指教。
最佳答案
这是因为/
是默认的日期分隔符,你们的机器有不同的文化。如果您总是将 /
作为日期分隔符并且具有接受 -
作为日期分隔符的文化,它将失败。
使用 ParseExact 避免不同文化的错误:
DateTime dt = DateTime.ParseExact(formatted, "M/dd/yyyy", null);
无论您将使用哪种文化,上面的代码都将使用 /
作为日期分隔符来解析日期
关于c# - "String was not recognized as a valid DateTime."Window 7电脑环境出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19656975/