我正在使用TimeZoneConverter NuGet 包。
太平洋標準時間使用 UTC-8
- 創建一個日期時間作為太平洋時區。
- 太平洋時間轉換為 UTC 時間。
- UTC 時間再次轉換為太平洋時區。但結果不等于第一項中的日期時間。為什么?任何的想法?
[Fact]
public void DateTimeConvertTesting()
{
TimeZoneInfo pacificTimeZone = TZConvert.GetTimeZoneInfo("Pacific Standard Time"); // TimeZoneConverter
DateTimeOffset dateTimeOffsetPacific2 = new DateTimeOffset(2021, 09, 01, 11, 59, 0, pacificTimeZone.BaseUtcOffset);
DateTime utcDateTime = dateTimeOffsetPacific2.UtcDateTime;
DateTime pacificTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, pacificTimeZone);
Assert.True(dateTimeOffsetPacific2.DateTime == pacificTime);
}
uj5u.com熱心網友回復:
我認為 Caius Jard 在評論中找到了正確的問題。
對于2021 年的太平洋標準時間,夏令時從 3 月 14 日凌晨 02:00 開始,到 11 月 7 日凌晨 02:00 結束。
TimeZoneInfo.ConvertTimeFromUtc方法處理夏令時本身。這意味著,如果Datetime或DateTimeOffset是 DST 上的Pacific Standard Time,它回傳 DST 附加值(通常為 1 小時)。這就是為什么你的pacificTime變數{9/1/2021 12:59:00 PM} 不會 {9/1/2021 11:59:00 PM}
如果您必須ConvertTimeFromUtc用于測驗,最好先檢查您的DateTime或DateTimeOffset是否為該特定時區的夏令時。您可以TimeZoneInfo.IsDaylightSavingTime對同時具有DateTime和多載的方法使用方法DateTimeOffset。
var isDaylightSavingTime = pacificTimeZone.IsDaylightSavingTime(utcDateTime);
// for 2021, 09, 01, 11, 59, 0, this returns true.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/400176.html
