我的本地時區爲(UTC + 10:00)堪培拉,墨爾本,悉尼日期時間 - 斯特蘭奇夏令行爲
週六31-MAR-2012 15:59 UTC =太陽01-APR-2012 + 02:59 11:00
週六31-MAR-2012 16:00 UTC =太陽01-APR-2012 02:00 +10:00
夏令結束在凌晨3點第一個星期天到4月和鍾風回1小時。
考慮下面的代碼....
DateTime dt1 = DateTime.Parse("31-Mar-2012 15:59", CultureInfo.CurrentCulture, DateTimeStyles.AssumeUniversal);
DateTime dt2 = DateTime.Parse("31-Mar-2012 15:59", CultureInfo.CurrentCulture, DateTimeStyles.AssumeUniversal).AddMinutes(1);
DateTime dt3 = DateTime.Parse("31-Mar-2012 16:00", CultureInfo.CurrentCulture, DateTimeStyles.AssumeUniversal);
Console.WriteLine("{0:yyyy-MMM-dd HH:mm:ss.ffff K}", dt1);
Console.WriteLine("{0:yyyy-MMM-dd HH:mm:ss.ffff K} ({1}) = {2:yyyy-MMM-dd HH:mm:ss.ffff K} ({3})", dt2, dt2.Kind, dt3, dt3.Kind);
Console.WriteLine("{0} : {1} : {2}", dt1.ToUniversalTime().Hour, dt2.ToUniversalTime().Hour, dt3.ToUniversalTime().Hour);
我得到以下輸出
2012-APR-01 02:59:00.0000 +11:00
2012-APR-01 03 :00:00.0000 10:00(本地)= 2012-APR-01 02:00:00.0000 10:00(本地)
15:17:16
添加1分鐘至原始日期時間使本地時間3AM,但也將偏移設置爲+10小時。 向UTC日期添加1分鐘並正確解析,將本地時間設置爲+10 UTC偏移量的上午2點。
與
DateTime dt1 = new DateTime(2012, 03, 31, 15, 59, 0, DateTimeKind.Utc);
DateTime dt2 = new DateTime(2012, 03, 31, 15, 59, 0, DateTimeKind.Utc).AddMinutes(1);
DateTime dt3 = new DateTime(2012, 03, 31, 16, 0, 0, DateTimeKind.Utc);
或
DateTime dt1 = DateTime.Parse("31-Mar-2012 15:59", CultureInfo.CurrentCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);
DateTime dt2 = DateTime.Parse("31-Mar-2012 15:59", CultureInfo.CurrentCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal).AddMinutes(1);
DateTime dt3 = DateTime.Parse("31-Mar-2012 16:00", CultureInfo.CurrentCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);
重複給出
2012-MAR-31 15:59:00.0000ž
2012-MAR-31 16:00:00.0000ž (Utc)= 2012-Mar-31 16:00:00.0000 Z(Utc)
15:16:16
預期
與
DateTime dt1 = new DateTime(2012, 03, 31, 15, 59, 0, DateTimeKind.Utc).ToLocalTime();
DateTime dt2 = new DateTime(2012, 03, 31, 15, 59, 0, DateTimeKind.Utc).ToLocalTime().AddMinutes(1);
DateTime dt3 = new DateTime(2012, 03, 31, 16, 0, 0, DateTimeKind.Utc).ToLocalTime();
再次重複給原
2012-APR-01 02:59:00.0000 +11:00
2012-APR-01 03:00: 00.0000 +10:00(當地時間)= 2012-APR-01 02:00:00.0000 +10:00(當地時間)
15:17:16
任何人都可以解釋一下嗎?
猥褻如果我用的TimeZoneInfo從UTC到澳大利亞東部標準時間,我得到了正確的時間進行轉換,但我失去的DateTime實例作爲DateTime.Kind == DateTimeKind.Unspecified
偏移信息= =突出顯示的其他場景
這只是簡單的時間跨度添加,從夏令時結束前1分鐘開始,以UTC不明確的日期開始。
DateTime dt1 = new DateTime(2012, 03, 31, 15, 59, 0, DateTimeKind.Utc);
DateTime dt2 = new DateTime(2012, 03, 31, 15, 59, 0, DateTimeKind.Utc).ToLocalTime();
Console.WriteLine("Original in UTC : {0:yyyy-MMM-dd HH:mm:ss.ffff K}", dt1);
Console.WriteLine("Original in Local : {0:yyyy-MMM-dd HH:mm:ss.ffff K}", dt1.ToLocalTime());
Console.WriteLine("+ 1 Minute in Local : {0:yyyy-MMM-dd HH:mm:ss.ffff K}", dt1.AddMinutes(1).ToLocalTime());
Console.WriteLine("+ 1 Minute in UTC : {0:yyyy-MMM-dd HH:mm:ss.ffff K}", dt1.AddMinutes(1));
Console.WriteLine("=====================================================");
Console.WriteLine("Original in UTC : {0:yyyy-MMM-dd HH:mm:ss.ffff K}", dt2.ToUniversalTime());
Console.WriteLine("Original in Local : {0:yyyy-MMM-dd HH:mm:ss.ffff K}", dt2);
Console.WriteLine("+ 1 Minute in Local : {0:yyyy-MMM-dd HH:mm:ss.ffff K}", dt2.AddMinutes(1));
Console.WriteLine("+ 1 Minute in UTC : {0:yyyy-MMM-dd HH:mm:ss.ffff K}", dt2.AddMinutes(1).ToUniversalTime());
給出了UTC
原文:2012-MAR-31十五點59分00秒。0000ž
原件本地:2012-APR-01 02:59:00.0000 11:00
+ 1分鐘在本地:2012-APR-01 :00:00.0000 10:00
+ 1在一分鐘UTC:2012-MAR-31 :00:00.0000ž
============================= ========================
原創於UTC:2012年3月31日15:59:00.0000 Z
原創地區:2012 -Apr-01 02:59:00.0000 +11:00
+ 1分鐘i ñ地方:2012-APR-01 :00:00.0000 +10:00
+ 1分鐘UTC:2012-MAR-31 :00:00.0000ž
日期時間不「養」的本地偏差。我只是顯示當時有效的抵消。由於dt2始終處於本地時間,因此當前時刻的視圖是「真實的」。 您應該使用的DateTimeOffset,如果你想隨身攜帶的「適用」抵消http://msdn.microsoft.com/en-us/library/system.datetimeoffset.aspx – IDisposable 2012-03-02 01:42:57
......如果這是真的,那麼我本來可以預期在上一場景中dt2的第三個結果是03:00:00 +11:00,但它知道DST已經完成。它正確地切換到了+10:00,但並沒有消除小時。 的DateTimeOffset顯示的時間爲03:00:00 +11:00,這不適用於我的本地時區。 – 2012-03-02 02:22:48
沒有,它知道你說的這是3:00爲2012/4/1,所以在那一刻偏移量是+10:00 – IDisposable 2012-03-02 03:38:43