好吧,所以我正在嘗試閱讀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格式
好吧,所以我正在嘗試閱讀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格式
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
}
'+ 0000'部分可以用作時區偏移量'zzz',偏移量爲 – V4Vendetta 2013-05-13 12:25:00
@ V4Vendetta,這是完美的,但這使得我的答案重複如此+1,給你 – Habib 2013-05-13 12:26:03
你應該使用DateTime的ParseExact獲取您的值
DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013","ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture);
關閉,但你正在施加計算機的本地時區。詳情請參閱我的回答。 – 2013-05-13 16:13:07
您可以使用
var date = DateTime.TryParseExcact(d.Element("created_at").Value, new String[]{"pattern" });
http://msdn.microsoft.com/en-us/library/system.datetime.tryparseexact.aspx
要小心。您收到的時間以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
的實際代碼修復從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;
}
怎麼看的同一主題的搜索在這麼說? – I4V 2013-05-13 12:17:12
嘗試[DateTime.ParseExact](http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx)。 – 2013-05-13 12:18:01