"字符串未被识别为有效的DateTime." Window 7计算机环境中发生错误

Pan*_*ong 2 c# string datetime .net-4.0

美好的一天,

在此之前,我在使用Microsoft Window XP的VM中使用了ac#系统.我有一些代码将字符串转换为日期时间,以下是我的代码的一部分:

DateTime allowDateTime = DateTime.Now.AddMonths(-2);
string formatted = allowDateTime.ToString("M/dd/yyyy");
DateTime dt = Convert.ToDateTime(formatted);

if (redempDateConvert < dt)
   td.Text = "";
Run Code Online (Sandbox Code Playgroud)

在此之前,一切都运转良好.之后,我移动我的所有源代码,没有任何更改,数据库并在我的真实机器中设置它(Window 7).

系统工作正常,我仍然可以像往常一样登录并控制系统.

直到今天,我已触及此部分,并且浏览器显示错误消息: String was not recognized as a valid 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 = "";
Run Code Online (Sandbox Code Playgroud)

我检查了两个(VM和我的真实机器)环境,两者都在.Net 4.0中运行.

只是好奇为什么相同的代码,但在我的真机中发生错误.我错过了配置的东西吗?好心提醒.

Kam*_*ski 5

这是因为/默认日期分隔符,您的机器有不同的文化.如果您始终/作为日期分隔符获取并且具有接受-为日期分隔符的区域性,则它将失败.

使用ParseExact来避免不同文化的错误:

DateTime dt = DateTime.ParseExact(formatted, "M/dd/yyyy", null);
Run Code Online (Sandbox Code Playgroud)

上面的代码将使用/日期分隔符解析日期,无论您将使用哪种文化