2013-09-29 70 views
0

我從Excel文件讀取和保存內容到數據庫轉換HH:MM:SS字符串轉換日期時間

列的一個包含視頻的長度以這種格式

HH:MM:SS

我寫這篇文章的代碼到目前爲止

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

我得到錯誤:

String was not recognized as a valid DateTime.

我試圖調試模式和我看到的值:在變量時間「30/12/1899 0時09分21秒」 噹噹前execl的列中的值是:「0時09分21秒「

」30/12/1899「從哪裏來?爲什麼字符串未被識別爲有效的DateTime?

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

+1

你的文化是什麼? –

+0

它將此字段視爲日期時間值並將其格式化爲僅顯示時間。 – Hogan

+0

使用['TimeSpan'](http://msdn.microsoft.com/zh-cn/library/system.timespan.aspx)結構來保存時間值。 DateTime包含日期和時間。 – HABO

回答

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

確定是否解決了錯誤。也許我採取錯誤的做法,我希望將來有能力總結所有視頻的時間,哪些數據鍵入我應該存儲在SQL Server中以完成任務? – baaroz

+0

@baaroz - 這取決於SQL Server的版本,而且是另一個問題 - 您應該將其作爲問題發佈。 – Hogan

2

因爲你沒跟InvariantCulture給我們任何有關您CultureInfo,在這裏;

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。你讓其他人看起來很糟糕! :) – paqogomez

+0

他的閱讀器對象已經是一個日期時間,所以解析是多餘的 –

0

的問題在於:Excel沒有時間字段,自動轉換時間,日期時間字段。 如果課程日期是「空」的,這意味着它的最小日期爲Excel - 30/12/1899

而且你不必調用的ToString方法,因爲對象已經是一個DateTime

1

使用TimeSpan結構來保存一個時間值。 A DateTime包含日期和時間。

+0

你能舉例如何從excel行只保存HH:mm:ss嗎?它可以存儲在SQL服務器下的日期時間數據類型? – baaroz

+0

'TimeSpan.ParseExact'應該能夠轉換字符串'time'中值的最後8個字符。 SQL Server ['time'](http://msdn.microsoft.com/zh-cn/library/bb677243.aspx)數據類型支持小於24小時的值。 – HABO

相關問題