2
我在LINQPad中運行此代碼片段。C#TimeZoneInfo.ConvertTimeToUtc與其他時間轉換工具不匹配
DateTime dt = new DateTime(2011, 2, 1,15,0,0);
dt.Dump();
TimeZoneInfo timeZoneId = TimeZoneInfo.FindSystemTimeZoneById("Samoa Standard Time");
//timeZoneId.GetAdjustmentRules().Dump();
var x = TimeZoneInfo.ConvertTimeToUtc(DateTime.SpecifyKind(dt, DateTimeKind.Unspecified), timeZoneId);
x.Dump();
結果是: 2011年2月1日下午3點00分零零秒 2011年2月2日1:00:00 AM。
當我去GMT Time Convertor仔細檢查時,返回的值是:2/1/2011 2:00:00 AM。 .Net函數爲什麼會返回與另一個站點不同的值。誰是對的?我們剛剛切換到夏令時(我沒有在切換之前檢查它),這是否重要?
我們的質量檢查中發現不匹配的列表:
ID GMT Offset Name DateTime Tested Conversion Result Correct GMT
(Value in DB)
16 -11:00 Samoa 2/1/2011 3:00 PM 2/2/2011 1:00 AM 2/2/2011 2:00 AM
19 +12:00 Auckland, Wellington 2/1/2011 3:00 PM 2/1/2011 2:00 AM 2/1/2011 3:00 AM
20 +12:00 Fiji 2/1/2011 3:00 PM 2/1/2011 2:00 AM 2/1/2011 3:00 AM
23 +10:00 Canberra, 2/1/2011 3:00 PM 2/1/2011 4:00 AM 2/1/2011 5:00 AM
Melbourne, Sydney
25 +10:00 Hobart 2/1/2011 3:00 PM 2/1/2011 4:00 AM 2/1/2011 5:00 AM
27 +09:30 Adelaide 2/1/2011 3:00 PM 2/1/2011 4:30 AM 2/1/2011 5:30 AM
68 +01:00 Windhoek 2/1/2011 3:00 PM 2/1/2011 1:00 PM 2/1/2011 2:00 PM
80 -03:00 Brasilia 2/1/2011 3:00 PM 2/1/2011 5:00 PM 2/1/2011 6:00 PM
84 -03:00 Montevideo 2/1/2011 3:00 PM 2/1/2011 5:00 PM 2/1/2011 6:00 PM
88 -04:00 Cuiaba 2/1/2011 3:00 PM 2/1/2011 6:00 PM 2/1/2011 7:00 PM
89 -04:00 Santiago 2/1/2011 3:00 PM 2/1/2011 6:00 PM 2/1/2011 7:00 PM
由於這個問題,我讀了關於Noda Time的MSDN(http://msdn.microsoft.com/en-us/magazine/jj991981.aspx)。如果做時間轉換 – Aligned 2014-02-28 19:16:02