【问题标题】: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 是否可以为空?

标签: c# sql


【解决方案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();

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2011-05-29
    相关资源
    最近更新 更多