c# - "String was not recognized as a valid DateTime."Window 7电脑环境出现错误

标签 c# string datetime .net-4.0

大家好,

在此之前,我在装有 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/

相关文章:

c# - 在 configSource 中使用外部 .config 文件会产生错误

c# - 尝试恢复数据库中列的当前值时出错

c - 多个 scanf 的使用问题

c++ - 我的程序出现 abort() 错误,但由于它是程序的加载部分,我无法调试它?

c++ - 混合 cin 和 getline 输入问题

sql-server - MS SQL Server 2012 将日期时间导出为无法导入的脚本

python - 如何使用日期时间对方法进行单元测试?

c# - LINQ 中的展平列表

c# - Random.Range 给出 "Unknown resolve error"

c# - DateTime ParseExact 异常