将 HH:MM:ss 字符串转换为日期时间

本文关键字:日期 转换 时间 ss HH MM 字符串 | 更新日期: 2023-09-27 18:33:17

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

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

呵:嗔

唔�

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

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

我收到错误:

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

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

"30/12/1899"从何而来?为什么字符串未被识别为有效的日期时间?

我可以只将格式 HH:mm:ss 保存到 sql 服务器吗?

将 HH:MM:ss 字符串转换为日期时间

试试这个,简单的黑客,就像我上面的评论一样。

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);

由于您没有向我们提供有关您的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

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

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

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