日期转换错误
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();
【讨论】:
以上是关于日期转换错误的主要内容,如果未能解决你的问题,请参考以下文章