2012-07-27 38 views
3

我如何將用戶發出的鳴叫時間轉換爲本地時間? created_at給了我創建推文的時間,並基於用戶所在的國家,我如何使用c#將其更改爲我的本地時間。時間格式爲「Fri Jul 27 15:14:11 +0000 2012」。 utc_offset是什麼意思,它如何用來改變時區?Twitter時間到當地時間c#

我並不真正熟悉的時區的東西,感謝您的幫助:)

回答

3

你會想要使用DateTimeOffset structure。這使您可以捕獲日期和時間以及與UTC的偏移。

要使用Twitter的時間格式爲:

string twitterDate = "Fri Jul 27 15:14:11 +0000 2012"; 

DateTimeOffset dt = DateTimeOffset.ParseExact(twitterDate, 
    "ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture); 

注意while not documented, zzzzdoes work as a custom date time format和解析正確的偏移成功。這意味着將來您應該小心依賴它(除非文檔更改爲反映此功能)。

一旦你有了DateTimeOffset,你知道UTC的偏移量。如果你想在你的當地時間得到它,你可以撥ToLocalTime methodDateTimeOffset被解析,它會返回一個基於你的本地設置偏移量的實例。

+0

謝謝,它完美的作品! – Phantom 2012-07-29 06:44:58

1

這應該是它:

DateTime localDateTime = DateTime.ParseExact(dateString, "ddd MMM dd HH:mm:ss zzz yyyy", new CultureInfo("en-US")); 

除非你在一個DateTime的構造給予DateTimeKind中, DateTime將在工作站/服務器的管理員爲Windows選擇的時區中。

+0

['zzzz'不是受支持的自定義日期格式。](http://msdn.microsoft.com/en-us/library/8kb3ddd4) – casperOne 2012-07-27 19:53:29

+0

好吧,奇怪它是如何工作的:http:// ideone。 com/8canC – 2012-07-27 19:54:26

+0

有趣的是,它沒有記錄。 – casperOne 2012-07-27 19:58:01