2014-02-21 33 views
4

我想從Excel中讀取非常規時間格式的C#,Excel中的時間值爲「29-Aug-01 11.23.00.000000000 PM」,而在Excel中,單元格格式是「常規」而不是「時間」。從Excel中讀取非常規時間格式C#

現在我需要在excel中讀取時間,然後將時間分配到asp.net/c#中的日曆時間,如何讓程序瞭解時間格式?

大thx!

我的代碼不能正常工作

DateTime expTime = DateTime.ParseExact(strDate, "dd-MMM-yy hh.mm.ss.fffffffff tt",  System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat); 

回答

1

我有類似的解決方案,但更ACCUR。

string s = "29-Aug-01 11.23.00.000000000 AM"; 

DateTimeOffset myDate = DateTimeOffset.ParseExact(
    s, 
    "dd-MMM-yy hh.mm.ss.fffffff00 tt", 
    System.Globalization.CultureInfo.InvariantCulture); 

編輯: 不能使用多於7 'F' 字符。

+1

+1,這絕對是更準確的,我猜測OP必須處理考慮前7位數毫秒。 – Habib

+0

Thx!有用!輸出是「8/29/2001 11:23:00 AM -04:00」,什麼是「-04:00」?時區?如果我需要顯示至少毫秒或納秒,我該怎麼辦? – Windtalker

+0

@Windtalker輸出什麼?您沒有顯示任何輸出或格式化結果的代碼。如果在不指定格式的情況下使用Console.WriteLine或String.Format,則將使用當前用戶的日期格式。在這種情況下,它看起來像使用美國格式。 –

0

原始格式字符串失敗,因爲DateTime類型不能表示納秒。下面的格式字符串將工作:

var expTime = DateTime.ParseExact(strDate, "dd-MMM-yy hh.mm.ss.fffffff00 tt", 
       CultureInfo.InvariantCulture); 

這工作,因爲00字符解析時解釋爲文字和忽略。

請注意,我通過CultureInfo.InvariantCulture而不是系統的UI文化。這確保即使用戶的UI文化被設置爲其他語言,也可以使用英文月份縮寫。否則,DateTime.ParseExact將嘗試使用用戶的語言月份縮寫來解析日期字符串

+0

它的工作原理!謝謝! – Windtalker