2012-08-08 82 views
10

我有一個string s = "May 16, 2010 7:20:12 AM CDT,我想轉換成DateTime對象。在下面的代碼中,當試圖使用已知格式分析文本時,我得到的日期格式無法轉換錯誤。格式字符串日期時間與時區

timeStamp = matches[0].Groups[1].Value; 
dt = DateTime.ParseExact(timeStamp, "MMM dd, yyyy H:mm:ss tt", null); 

該時區以CDT UTC形式出現...我認爲是什麼導致了問題或我的格式?

+0

怎麼樣'VAR DT = DateTime.ParseExact(S ,「MMM dd,yyyy H:mm:ss tt'CDT'」,null);'? – Vlad 2012-08-08 21:54:38

回答

7

Central Daylight Time

試試這個:

string dts = "May 16, 2010 7:20:12 AM CDT"; 
DateTime dt = 
    DateTime.ParseExact(dts.Replace("CDT", "-05:00"), "MMM dd, yyyy H:mm:ss tt zzz", null); 

編輯:

夏令時請考慮DateTime.IsDaylightSavingTimeTimeZone.CurrentTimeZone

Custom Date and Time Format Strings

+1

如果CDT具有夏時制並變爲-4,會發生什麼情況? – Greg 2012-08-09 01:55:48

+0

添加到回答 – rumburak 2012-08-09 13:50:31

+0

我在哪裏可以找到關於偏移集和時區的信息,我也可以將CST作爲時區並需要替換和處理夏令時。 – Warz 2012-08-09 15:25:10

3

確保DateTime明確地是DateTimeKind.Utc。避免使用「GMT」,這對夏令時是不明確的。

var dt = new DateTime(2010, 1, 1, 1, 1, 1, DateTimeKind.Utc); 
    string s = dt.ToLocalTime().ToString("MMM dd, yyyy HH:mm:ss tt \"GMT\"zzz"); 

它給人輸出:2010年12月31日19時01分01秒下午GMT-06:00

有關更多詳細信息請參閱本Link

+0

使用UTC是正確的,因爲它是國際標準,但格林威治時間對於夏令時並不明確。 GMT始終是UTC + 0。英國在夏季切換到BST。有關詳情,請訪問http://www.differencebetween.com/difference-between-gmt-and-utc/ – thelem 2017-11-22 12:57:49

相關問題