我正在try 将UTC日期转换为"埃及标准时间",但根据操作系统版本的不同,夏季时间的计算偏移量会有所不同:
- 在Windows 10上,偏移量为+2
- 在Windows 11上,偏移量为+3(这是正确的偏移量)
这是我用于转换的代码:
TimeZoneInfo timeZone = TZConvert.GetTimeZoneInfo("Egypt Standard Time");
DateTimeOffset initialLocalTime = TimeZoneInfo.ConvertTime(dateTimeUtc, timeZone);
DateTimeUtc的类型为DateTimeOffset
,值为:
{10/14/2023 9:00:00 PM +00:00}
Date: {10/14/2023 12:00:00 AM}
DateTime: {10/14/2023 9:00:00 PM}
Day: 14
DayOfWeek: Saturday
DayOfYear: 287
Hour: 21
LocalDateTime: {10/15/2023 12:00:00 AM}
Millisecond: 0
Minute: 0
Month: 10
Offset: {00:00:00}
Second: 0
Ticks: 638329140000000000
TimeOfDay: {21:00:00}
UtcDateTime: {10/14/2023 9:00:00 PM}
UtcTicks: 638329140000000000
Year: 2023
这就是结果:
{10/14/2023 11:00:00 PM +02:00}
Date: {10/14/2023 12:00:00 AM}
DateTime: {10/14/2023 11:00:00 PM}
Day: 14
DayOfWeek: Saturday
DayOfYear: 287
Hour: 23
LocalDateTime: {10/15/2023 12:00:00 AM}
Millisecond: 0
Minute: 0
Month: 10
Offset: {02:00:00}
Second: 0
Ticks: 638329212000000000
TimeOfDay: {23:00:00}
UtcDateTime: {10/14/2023 9:00:00 PM}
UtcTicks: 638329140000000000
Year: 2023
在结果中,偏移量是+2,应该是+3.
我发现最近Daylight saving time in Egypt被更改了,我想这就是Windows 10不能正常工作的原因.
如何在所有操作系统上正确计算此时区的偏移量? 为了获得正确的偏移量,我应该调用一些外部服务吗?