2013-05-13 97 views
2

好吧,所以我正在嘗試閱讀Twitter源XML的日期/時間,它目前採用以下格式:Fri May 03 15:22:09 +0000 2013但是,我的C#不會將其作爲日期/時間類型讀取。將此轉換爲日期時間格式C#

這是我得到:

ArticleDate = DateTime.Parse(d.Element("created_at").Value) 

created_at包含:週五05月03日15時22分09秒+0000 2013格式

+0

怎麼看的同一主題的搜索在這麼說? – I4V 2013-05-13 12:17:12

+0

嘗試[DateTime.ParseExact](http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx)。 – 2013-05-13 12:18:01

回答

1

使用DateTime.TryParseExact像:

if (DateTime.TryParseExact("Fri May 03 15:22:09 +0000 2013", 
               "ddd MMMM dd HH:mm:ss zzz yyyy", 
               CultureInfo.InvariantCulture, 
               DateTimeStyles.None, 
               out ArticleDate)) 
      { 
       //date is fine 
      } 
+0

'+ 0000'部分可以用作時區偏移量'zzz',偏移量爲 – V4Vendetta 2013-05-13 12:25:00

+0

@ V4Vendetta,這是完美的,但這使得我的答案重複如此+1,給你 – Habib 2013-05-13 12:26:03

2

你應該使用DateTime的ParseExact獲取您的值

DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013","ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture); 
+0

關閉,但你正在施加計算機的本地時區。詳情請參閱我的回答。 – 2013-05-13 16:13:07

6

要小心。您收到的時間以UTC表示。您可能會無意中讓您當地的時區影響結果。

例如,其他的答案的一個建議的這樣的代碼:

DateTime dt = DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013", 
            "ddd MMM dd HH:mm:ss zzz yyyy", 
            CultureInfo.InvariantCulture); 

的這個我的計算機,該計算機是在亞利桑那州(UTC-7),在其結果是:

5/3/2013 8:22:09 AM (dt.Kind == DateTimeKinds.Local) 

雖然這是當地時間的正確時刻,但這並不是我給予的,也可能不是你所期望的,除非密切關注.Kind財產。

可以改爲執行以下操作:

DateTime dt = DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013", 
            "ddd MMM dd HH:mm:ss zzz yyyy", 
            CultureInfo.InvariantCulture, 
            DateTimeStyles.AdjustToUniversal); 

這將返回:

5/3/2013 3:22:09 PM (dt.Kind == DateTimeKinds.Utc) 

哪個好,你開始什麼用火柴。

現在,假定從Twitter返回的值始終是UTC。這似乎是這種情況,according to their FAQ。但有人可能會爭辯說,既然我們給了一個偏移量,那麼使用這個偏移量可能會更準確。如果偏移量發生變化,我們不希望我們的代碼中斷。因此,使用DateTimeOffset類更爲合適。其中

DateTimeOffset dto = DateTimeOffset.ParseExact("Fri May 03 15:22:09 +0000 2013", 
               "ddd MMM dd HH:mm:ss zzz yyyy", 
               CultureInfo.InvariantCulture); 

結果是:

5/3/2013 3:22:09 PM +00:00 
1

的實際代碼修復從Twitter的API XML這個特定的日期格式如下:

using System.Globalization; 

CultureInfo enUS = new CultureInfo("en-US");     
DateTime dateValueOut; 
string userCreated = "Fri May 03 15:22:09 +0000 2013"; 

bool isDateFormatted = DateTime.TryParseExact(userCreated,"ddd MMM dd HH:mm:ss zzzz yyyy",enUS,DateTimeStyles.None, out dateValueOut); 

if (isDateFormatted == true) 
{ 
    DateTime formattedDateTime = dateValueOut;      
} 
相關問題