2016-06-16 51 views
1

我說的是我回國的日期這種格式
Fri, 02 Oct 2009 05:33:11 - 0500DateTime.ParseExact問題非標準的時區字符串

我一直在試圖解析成一個DateTime在C#中的Web服務和獲取無效的字符串錯誤。

字符串未被識別爲有效的DateTime

下面是代碼:

string text = "Fri, 02 Oct 2009 05:33:11 - 0500"; 
DateTime date = DateTime.ParseExact(text,"ddd, dd MMM yyyy h:mm:ss - zzzzz", null); 

如果我刪除- 0500- zzzzParseExact的說法,它工作得很好。不知道我在時區上做錯了什麼。任何方向將不勝感激。我已經嘗試了不同的「z」計數,並刪除了「 - 」,同時假設它對於否定的混淆。

+1

請提供錯誤(使用您遇到的堆棧跟蹤)。 –

回答

5

你簡單,不能

你的輸入不是一個有效的字符串,可以解析爲DateTime除非你對它做了一些字符串操作。而你的抵消部分必須有分號(:)來解析它。

此外,您需要使用hh specifier(或更可取的HH),因爲您的小時零件具有前導零。

我只能想到一個辦法,得到的白色空間的最後一個索引,將其刪除,插入您的時間和偏移分鐘之間:,並解析到DateTimeOffset因爲你的字符串中有UTC Offset一部分。

string text = "Fri, 02 Oct 2009 05:33:11 -05:00"; 
var dto = DateTimeOffset.ParseExact(text, "ddd, dd MMM yyyy HH:mm:ss zzz", 
            CultureInfo.InvariantCulture, DateTimeStyles.None); 

現在你有一個DateTimeOffset作爲2.10.2009 05:33:11 -05:00,您可以使用它的DateTimeLocalDateTimeUtcDateTime性能。

+0

+1在Linqpad中爲我工作:DateTime dt = dto.DateTime; dt.Dump();返回'02.10.2009 05:33:11' – surfmuggle