将HH:MM:ss字符串转换为datetime

时间:2013-09-29 18:13:13

标签: c# sql-server parsing

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

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

HH:MM:SS

我到目前为止编写此代码

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

我收到错误:

  

字符串未被识别为有效的DateTime。

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

“30/12/1899”来自哪里?为什么字符串未被识别为有效的DateTime?

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

4 个答案:

答案 0 :(得分:2)

试试这个,轻松破解我的评论。

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

答案 1 :(得分: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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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