Windows Server 2019 Core中PowerShell与cmd时间不一致问题求助
解决Windows Server 2019 Core时区夏令时未生效问题
1. 验证系统时区配置是否真正生效
先在cmd中执行命令确认当前时区设置:
tzutils /g
确保输出为Iran Standard Time_dstoff。若不一致,重新执行设置命令并重启服务器:
tzutils /s "Iran Standard Time_dstoff" shutdown /r /t 0
2. 刷新PowerShell时区缓存
PowerShell会缓存时区数据,关闭所有PowerShell窗口后重新打开,再执行Get-Date查看结果。若仍异常,强制刷新缓存:
[System.TimeZoneInfo]::ClearCachedData() Get-Date
3. 重启Asp.Net相关服务
Asp.Net应用进程可能缓存了旧时区信息,需重启对应服务:
- 若使用IIS托管,执行:
iisreset
- 若为自托管应用,直接重启应用进程。
4. 检查注册表夏令时禁用状态
打开cmd执行命令,确认系统是否禁用了夏令时自动调整:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v DisableAutoDaylightTimeSet
若返回值为0x0,手动设置为禁用:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v DisableAutoDaylightTimeSet /t REG_DWORD /d 1 /f
设置完成后重启服务器生效。
5. 排查应用代码时区逻辑
检查Asp.Net应用代码,确认没有硬编码时区或手动启用夏令时的逻辑:
- 避免直接使用
TimeZoneInfo.FindSystemTimeZoneById("Iran Standard Time"),确保使用带_dstoff的时区ID - 排查是否存在自定义时区转换逻辑覆盖系统设置
内容的提问来源于stack exchange,提问作者RezaNoei
相关产品推荐
相关产品推荐

