日期时间转换两次不等于开始时间
Datetime Converting two times not equal starting time
我正在使用 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);
}
我认为 Caius Jard 在评论中提出了正确的问题。
看起来像 Pacific Standard Time on 2021, DST started March 14 02:00 AM and ends 7 November 02:00 AM。
TimeZoneInfo.ConvertTimeFromUtc
method 处理夏令时 本身 。这意味着,如果 Datetime
或 DateTimeOffset
是 Pacific Standard Time
的 DST,它 returns DST 附加值(通常为 1 小时)。这就是为什么你的 pacificTime
变量
会是{9/1/2021 12:59:00 PM}
不是{9/1/2021 11:59:00 PM}
如果您必须使用 ConvertTimeFromUtc
进行测试,最好先检查您的 DateTime
或 DateTimeOffset
是否为 [=35= 的夏令时]that 特定时区。您可以使用 TimeZoneInfo.IsDaylightSavingTime
方法来重载 DateTime
和 DateTimeOffset
.
var isDaylightSavingTime = pacificTimeZone.IsDaylightSavingTime(utcDateTime);
// for 2021, 09, 01, 11, 59, 0, this returns true.
我正在使用 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);
}
我认为 Caius Jard 在评论中提出了正确的问题。
看起来像 Pacific Standard Time on 2021, DST started March 14 02:00 AM and ends 7 November 02:00 AM。
TimeZoneInfo.ConvertTimeFromUtc
method 处理夏令时 本身 。这意味着,如果 Datetime
或 DateTimeOffset
是 Pacific Standard Time
的 DST,它 returns DST 附加值(通常为 1 小时)。这就是为什么你的 pacificTime
变量
会是{9/1/2021 12:59:00 PM}
不是{9/1/2021 11:59:00 PM}
如果您必须使用 ConvertTimeFromUtc
进行测试,最好先检查您的 DateTime
或 DateTimeOffset
是否为 [=35= 的夏令时]that 特定时区。您可以使用 TimeZoneInfo.IsDaylightSavingTime
方法来重载 DateTime
和 DateTimeOffset
.
var isDaylightSavingTime = pacificTimeZone.IsDaylightSavingTime(utcDateTime);
// for 2021, 09, 01, 11, 59, 0, this returns true.