日期转换错误

Posted

技术标签:

【中文标题】日期转换错误【英文标题】:Error in date conversion 【发布时间】:2014-05-15 11:12:53 【问题描述】:

我收到此错误“从字符串转换日期和/或时间时转换失败。” 我的代码如下。

string[] closedate = lbldate_end.Text.Split(' ');
string txtdate = closedate[0];
string txttime = closedate[1];

我正在从标签中的 SQL 数据库获取日期。 但我知道它是 15-05-2014 00:00:00 所以我把它分开。然后在数据库中更新。但是抛出错误。

从字符转换日期和/或时间时转换失败 字符串

请有人帮助我

【问题讨论】:

显示抛出异常的行。您的列的类型是什么?你为什么不把它作为DateTime(解析它)保存在你的数据库中?将日期和时间作为字符串保存不是一个好主意。 请显示您实际进行转换的代码。 你为什么首先将日期作为字符串获取?以DateTime 的形式获取它。尽可能避免字符串转换。 我的专栏是日期格式 lbldate_end 是否可以为空? 【参考方案1】:

使用SqlReader.GetDateTime function 来检索日期时间列。

然后您可以使用 DateTime.ToString function 和自定义格式来获取所需格式的日期和时间:

// assuming the column CLOSE_DATE is at position 5 = the fifth column from the table
var timestamp = myReader.GetDateTime(5);
Console.WriteLine(timestamp.ToString("yyyy-MM-dd")); // date only
Console.WriteLine(timestamp.ToString("HH:mm:ss")); // time only

var timestamp = (DateTime)myReader["CLOSE_DATE"];
Console.WriteLine(timestamp.ToString("yyyy-MM-dd"));
Console.WriteLine(timestamp.ToString("HH:mm:ss"));

假设该字段包含今天和某个时间,那么输出将类似于:

2014-05-15
13:18:31

在SO post 中可以找到另一种可能的解决方案。

【讨论】:

它抛出错误 错误 'string.ToString(System.IFormatProvider)' 的最佳重载方法匹配有一些无效参数 如果您仍在使用myReader["CLOSE_DATE"].ToString();,请删除.ToString(),以便将结果作为 DateTime 对象而不是字符串获取,然后重试。无法对字符串应用日期格式。 很高兴这个答案有帮助。【参考方案2】:

你可能想使用

end.Text = (myReader["CLOSE_DATE"] as DateTime).ToString();

代替你的

end.Text = myReader["CLOSE_DATE"].ToString();

【讨论】:

以上是关于日期转换错误的主要内容,如果未能解决你的问题,请参考以下文章

日期转换错误

请问:从字符串转换日期和/或时间时,转换失败。怎么修改

日期转换显示错误[重复]

将 C# 日期时间发送到 SQL Server - 错误“从字符串转换日期和/或时间时转换失败”

Sql中的日期转换错误

Swift 日期格式化程序错误地转换/创建日期/字符串 [重复]