【问题标题】:Convert HH:MM:ss string into datetime将 HH:MM:ss 字符串转换为日期时间
【发布时间】:2013-09-30 02:43:51
【问题描述】:

我正在读取 excel 文件并将内容保存到数据库中

其中一列包含此格式的视频长度

HH:mm:ss

到目前为止,我编写了这段代码

string time = oledbReader[6].ToString();
DateTime streamingTime = DateTime.ParseExact(time, 
                             "HH:mm:ss",
                             System.Globalization.CultureInfo.CurrentCulture);

我收到错误:

字符串未被识别为有效的日期时间。

我尝试了调试模式,我在变量 time 中看到了值:"30/12/1899 00:09:21" 当当前execl列的值为:"00:09:21"

“30/12/1899”从何而来?为什么字符串未被识别为有效的 DateTime?

我可以只将格式 HH:mm:ss 保存到 sql server 中吗?

【问题讨论】:

  • 你的文化是什么?
  • 它将此字段视为日期时间值并将其格式化为仅显示时间。
  • 使用TimeSpan 结构来保存时间值。 DateTime 包含日期和时间。
  • @HABO 我想你很理解这个问题,请把它作为答案发布

标签: c# sql-server parsing


【解决方案1】:

试试这个,我上面的评论很简单。

string time = oledbReader[6].ToString().Split(" ".ToCharArray())[1];
DateTime streamingTime = DateTime.ParseExact(time, "HH:mm:ss",System.Globalization.CultureInfo.CurrentCulture);

或者你可以按原样解析它......

DateTime streamingTime = DateTime.ParseExact(time, "dd/MM/yyyy HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);

【讨论】:

  • 好的,解决这个错误。也许我采取了错误的方法,我希望将来能够总结所有视频的时间,我应该在sql server中存储什么数据类型完成任务?
  • @baaroz - 这取决于 SQL Server 的版本,实际上是另一个问题 - 您应该将其作为问题发布。
【解决方案2】:

由于您没有向我们提供有关您的CultureInfo 的任何信息,因此这里提供InvariantCulture

string time = "30/12/1899 00:09:21";
DateTime streamingTime = DateTime.ParseExact(time, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine(streamingTime);

输出将是;

12/30/1899 12:09:21 AM

这里是 DEMO

欲了解更多信息,请查看Custom Date and Time Format Strings

【讨论】:

  • 这是演示中的下一级内容! +1。你让其他人看起来很糟糕! :)
  • 他的 reader 对象已经是一个日期时间,所以解析是多余的
【解决方案3】:

使用TimeSpan 结构来保存时间值。 DateTime 包含日期和时间。

【讨论】:

  • 你能举例说明如何只保存 excel 行中的 HH:mm:ss 吗?它可以存储在 datetime 数据类型下的 sql server 中吗?
  • TimeSpan.ParseExact 应该能够转换字符串 time 中值的最后 8 个字符。 SQL Server time 数据类型支持小于 24 小时的值。
【解决方案4】:

问题是excel没有时间字段并自动将时间转换为日期时间字段。 如果课程日期为“空”,这意味着它是 excel 的最小日期 - 1899 年 12 月 30 日

此外,您不必调用 ToString 方法,因为对象已经是 DateTime

【讨论】:

    猜你喜欢
    • 2021-08-29
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2022-08-18
    • 2017-08-31
    相关资源
    最近更新 更多