0

我在运行 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' 知道吗?

4

5 回答 5

4

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

<globalization culture="en-GB"/>

http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

于 2012-07-06T01:37:04.347 回答
3

Convert.ToDateTime 时需要使用明确的文化。受影响的机器上的默认文化可能不同,

http://msdn.microsoft.com/en-us/library/ms130987.aspx

于 2012-06-22T09:41:09.287 回答
2

该错误可能是由于错误的月份与日期造成的。

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

http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx

例如:

DateTime dt = DateTime.ParseExact(dr["Pdate"].ToString(), "yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture);
于 2012-06-22T09:44:04.597 回答
1

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

dr.BeginEdit();                                     
dr["Pdate"] = Convert.ToDateTime(dr[dc]).ToString("your format"); 
dr.EndEdit();
dr.AcceptChanges();
于 2012-06-22T11:27:19.330 回答
0

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

dr.BeginEdit();                                     
dr["Pdate"] = (DateTime)dr[dc]; // No need to convert this to a string :)
dr.EndEdit();
dr.AcceptChanges();
于 2012-06-22T10:41:50.517 回答