如何用PowerShell转换当前时间为中欧时区指定格式并解决时区ID错误
正确实现方法
错误原因
- 时区ID使用错误:Windows系统中欧时区(CET/CEST)的系统时区ID是
Central Europe Standard Time,而非你写的Central European Time,这是触发TimeZoneNotFoundException的核心原因。 - 代码变量名不一致:你定义的转换后变量是
$startTime,但最后调用了未定义的$dtoEST。 - 格式处理冗余:不需要用
-replace调整格式,直接用对应的格式字符串即可生成目标样式。
正确代码示例
# 获取当前本地时间 $localDate = Get-Date # 转换为中欧时区时间 $cetTime = [TimeZoneInfo]::ConvertTimeBySystemTimeZoneId($localDate, 'Central Europe Standard Time') # 格式化为目标格式"yyyy-MM-ddTHH:mm:ss" $formattedTime = $cetTime.ToString('yyyy-MM-ddTHH:mm:ss') # 输出结果 $formattedTime
额外说明
- 如果需要包含时区偏移信息(如
2023-05-25T09:51:55+02:00),可以直接使用格式字符串'o',系统会自动适配夏令时的偏移变化:$cetTime.ToString('o') - 若需确认系统支持的所有时区ID,可执行以下命令查看:
Get-TimeZone -ListAvailable | Select-Object Id, DisplayName
内容的提问来源于stack exchange,提问作者Naveen Kumar
相关产品推荐
相关产品推荐

