C# 字符串未被识别为有效的日期时间。无法';t商店<;2012年6月22日上午12:00:00>;在“购买日期”列中。类型应为DateTime

C# 字符串未被识别为有效的日期时间。无法';t商店<;2012年6月22日上午12:00:00>;在“购买日期”列中。类型应为DateTime,c#,asp.net,C#,Asp.net,我在运行XP的机器上收到此异常,但在windows 7上没有问题。我正试图将日期时间的格式设置为: dr.BeginEdit(); dr["Pdate"] = ((DateTime)dr[dc]).ToString("dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); dr.EndEdit(); dr.AcceptChanges(); 它在“2012-03-04

我在运行XP的机器上收到此异常,但在windows 7上没有问题。我正试图将日期时间的格式设置为:

dr.BeginEdit();                                     
dr["Pdate"] = ((DateTime)dr[dc]).ToString("dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
dr.EndEdit();
dr.AcceptChanges();
它在“2012-03-04 00:00:00.000”中运行良好,但问题是“2011-06-22 00:00:00.000”
有什么想法吗?

转换.ToDateTime时,需要使用明确的区域性。受影响的计算机上的默认区域性可能不同


该错误可能是由于将月份误认为是日期造成的

如果您知道日期格式,可以尝试使用
DateTime.ParseExact

例如:

DateTime dt = DateTime.ParseExact(dr["Pdate"].ToString(), "yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture);

您正在尝试在DateTime列中存储字符串。请尝试以下代码:

dr.BeginEdit();                                     
dr["Pdate"] = (DateTime)dr[dc]; // No need to convert this to a string :)
dr.EndEdit();
dr.AcceptChanges();

您可以使用以下代码这对我有帮助,我相信它也会对您有帮助:

dr.BeginEdit();                                     
dr["Pdate"] = Convert.ToDateTime(dr[dc]).ToString("your format"); 
dr.EndEdit();
dr.AcceptChanges();

我在web.config文件中添加了以下内容,解决了这个问题

<globalization culture="en-GB"/>


您发布的代码显示您正在进行4次完全不必要的转换,以将
dr[“PDate”]
分配给自身。您可以从日期转换<代码>字符串&rarr<代码>日期&rarr<代码>字符串然后再次返回日期!你能发布你的真实代码吗?@GregB这几乎肯定是一个数据行。给出错误消息后,
dr[“PDate”]
的类型是日期时间。请参阅我编辑的问题将抛出相同的异常。我的系统上未收到此类异常。我使用的是.net 3.5,VS 2008。dr[“Pdate”]似乎不接受“dd/MM/yyyy hh:MM:ss tt”,例如,2012年6月22日,此代码仍引发异常..“在我的末尾,它在3.5中也可以正常工作..同时引发消息:字符串未被识别为有效的日期时间。