TimeZone Convert:
//要计算的区时=已知区时-(已知区时的时区-要计算区时的时区),(注:东时区为正,西时区为负)
//当算出的区时为负数时,应加上24:00,日期减一天
//当算出的区时大于或等于24:00时,应减去24:00,日期加一天
如果是在DateTimePicker中计算那么只要
DateTimePicker.Value.AddHours(-((curZoneHour + curZoneMin / 60) -
(targetZoneHour + targetZoneMin / 60)));
但是前提是当前时区和目标时区的夏令时状态相同,即两者都同时使用夏令时或者都不在使用夏令时
如果当前时区用夏令时,目标时区没用夏令时,则
结果要-1小时
如果当前时区没用夏令时,目标时区用夏令时,则
结果要+1小时
通过PowerShell查看TimeZone:
How can I get this list programmatically with PowerShell?
$TimeZones = [TimeZoneInfo]::GetSystemTimeZones(); $TimeZones | Select-Object -Property "BaseUtcOffset", "StandardName", "DaylightName"
通过注册表查看TimeZone:
You can read all of the time zones in the registry, under the subkey
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
作者:Angelo Lee
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.