2010-08-30 40 views
4

我試圖解析一個datestamp(我從Twitter獲得)但接收錯誤。這裏的郵戳:解析奇怪格式的DateTime。任何人都喜歡加緊?

Fri, 27 Aug 2010 22:00:07 +0000

這裏是我的代碼:

DateTime.ParseExact(MyDateValue, "ddd, dd MMM YYYY HH:mm:ss +ffff", new CultureInfo("en-US"))

,這裏是我的錯誤:

System.FormatException was unhandled Message=String was not recognized as a valid DateTime.

任何花哨回吐上?爲了簡單起見,我提供了下面的代碼來展示問題的控制檯應用程序。

感謝 傑米

using System; 
using System.Globalization; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     string MyDateValue = "Fri, 27 Aug 2010 22:00:07 +0000"; 
     var dt = DateTime.ParseExact(MyDateValue, "ddd, dd MMM YYYY HH:mm:ss +ffff", new CultureInfo("en-US")); 

    } 
} 
+1

感謝大家,發現它應該是YYYY沒有YYYY。現在感覺很尷尬......回到一個安靜的角落...... :) – jamiet 2010-08-30 15:32:44

回答

9

年符是yyyy,不YYYY

string MyDateValue = "Fri, 27 Aug 2010 22:00:07 +0000"; 
var dt = DateTime.ParseExact(MyDateValue, "ddd, dd MMM yyyy HH:mm:ss +ffff", new CultureInfo("en-US")); 

以上工作正常,只要它不會拋出異常。

我假設字符串末尾的+0000應該是一個時區說明符。如果是這樣,那麼ffff不正確,因爲它代表The hundred thousandths of a second,而不是時區說明符,即K。如果它確實應該是時區指示符,那麼這將是正確的代碼:

string MyDateValue = "Fri, 27 Aug 2010 22:00:07 +0000"; 
var dt = DateTime.ParseExact(MyDateValue, "ddd, dd MMM yyyy HH:mm:ss K", new CultureInfo("en-US")); 

Custom Date and Time Format Strings

0

如果您的YYYYyyyy

我的DateTime自定義格式化信息幫助文件只有小寫字母y,沒有大寫字母。

0

請注意,在一年的變化:YYYY-> YYYY

DateTime.ParseExact(MyDateValue, "ddd, dd MMM yyyy HH:mm:ss +ffff", new CultureInfo("en-US")) 
-1

我放棄了 「+0000」,只用於DateTime.Parse()

要到我的實際時區(因爲+0000可能是一個偏移從格林威治標準時間)我也設置。

string myDateValue = "Fri, 27 Aug 2010 22:00:07"; //get this using substring 
int gmtOffset = -6; //I'm in the Central TimeZone 
DateTime dt = DateTime.Parse(myDateValue); 
dt.AddHours(gmtOffset); 

Console.WriteLine(dt.ToString("ddd, dd MMM yyyy hh:mm:ss")); 
+0

GMT偏移是依賴於DLS – GuiSim 2012-05-28 15:35:51

0
System.DateTime.ParseExact(MyDateValue, "ddd, dd MMM yyyy HH:mm:ss zzz", new System.Globalization.CultureInfo("en-US")); 
0

年份部分必須是小寫:ddd, dd MMM yyyy HH:mm:ss +ffff