我正在读取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吗?
答案 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