我需要時間來轉換「UTC + 03:30時區」在我的web應用程序是在這裏UTC日期:如何將UTC日期轉換爲我的時區?
DateTime dt = DateTime.UtcNow;
是否有任何功能,UTC轉換成我的時區或不?如果ASP.NET中有一個函數,我不想讓自己在我的應用程序中編寫一個新函數。
該應用程序可能託管在世界上的不同服務器上,這正是我使用UTC日期的原因。
我需要一個函數將3:30添加到當前UTC時間。
我需要時間來轉換「UTC + 03:30時區」在我的web應用程序是在這裏UTC日期:如何將UTC日期轉換爲我的時區?
DateTime dt = DateTime.UtcNow;
是否有任何功能,UTC轉換成我的時區或不?如果ASP.NET中有一個函數,我不想讓自己在我的應用程序中編寫一個新函數。
該應用程序可能託管在世界上的不同服務器上,這正是我使用UTC日期的原因。
我需要一個函數將3:30添加到當前UTC時間。
您確定您的時區爲真的嗎 UTC +3:30,所有的時間,沒有夏令時?如果是這樣,你可以創建一個DateTimeOffset
與適當的偏移量(3.5小時)。例如:
DateTimeOffset dtOffset = new DateTimeOffset(DateTime.UtcNow,
TimeSpan.FromHours(3.5));
當然,讓你一個DateTimeOffset
,而不是一個DateTime
的...你能使用嗎?
一個更好的解決方案是使用TimeZoneInfo
- 例如,你可以得到正確的時區,並呼籲
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, tzInfo);
...或者你可以使用TimeZoneInfo
,但仍然得到了DateTimeOffset
:
DateTimeOffset dto = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, tzInfo);
如果可以的話,我個人建議你使用DateTimeOffset
,因爲DateTime
的含義有些模棱兩可,很難正確使用。
.NET的日期和時間處理有點混亂,不幸的是:(我有一個名爲Noda Time的項目,如果我們完成它的話,它應該會改善事情的狀態,但目前遠沒有生產就緒。
如果需要日期時間,您可以隨時再次調用'dtoffset.DateTime' :)問題與DateTimeOffset是'System.ServiceModel.Syndication'之外,沒有其他部分的BCL似乎使用它(類似於幾乎沒有任何東西使用'System.Uri',而是通常期望字符串。) – 2011-03-09 08:01:53
@Michael:True,但我希望這只是在顯示邊界 - 在這種情況下,它只需要格式化。不幸的是,我們目前沒有足夠的信息:( – 2011-03-09 09:14:32
,這將讓你轉換UTC任何時區
Shared Function FromUTC(ByVal d As Date, ByVal tz As String) As Date
Return (TimeZoneInfo.ConvertTimeBySystemTimeZoneId(d, TimeZoneInfo.Utc.Id, tz))
end function
你能夠用得到的時區的列表
For Each timeZone As TimeZoneInfo In tzCollection
Console.WriteLine(" {0}: {1}", timeZone.Id, timeZone.DisplayName)
Next
這不是真的C# - 使用VB日期類型,但是它是嗎?另外,我不相信* system *時區是OP想要使用。 – 2011-03-09 07:58:56
你會怎麼辦時dayli ght節省時間會發生? – Axarydax 2011-03-09 07:44:31
我不知道我對夏令時感到困惑保存是否有任何想法? – kamiar3001 2011-03-09 07:54:32
我們不知道你爲什麼試圖使用該時區,所以很難說。 UTC + 3:30有什麼特別之處? – 2011-03-09 07:59:48