在我使用的powershell中
(Get-Timezone).BaseUtcOffset
获取计算机的 UTC 偏移量,这为我的时区提供了+1h。这在技术上是正确的,因为我在冬季使用 CET (UTC+1),在夏季使用 CEST (UTC+2)。现在是 DST,所以对我来说是 CEST (UTC+2),所以我想知道如何在 powershell 中获取此信息,因为上面的命令告诉我我的时区是 UTC+1 并且根本没有提到 DST .
作为我目前使用的解决方法
$date = Get-Date
($date - $date.ToUniversalTime()).TotalMinutes
获取我所在时区的 UTC 与 DST 的偏移量。它评估为 +120 分钟,这正是我所需要的。
获取时区的输出:
Id : W. Europe Standard Time
DisplayName : (UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien
StandardName : Mitteleuropäische Zeit
DaylightName : Mitteleuropäische Sommerzeit
BaseUtcOffset : 01:00:00
SupportsDaylightSavingTime : True
$date 的输出 - $date.ToUniversalTime():
Days : 0
Hours : 2
Minutes : 0
Seconds : 0
Milliseconds : 0
Ticks : 72000000000
TotalDays : 0,0833333333333333
TotalHours : 2
TotalMinutes : 120
TotalSeconds : 7200
TotalMilliseconds : 7200000
谢谢你Bender the Greatest你让我走上了正确的道路。 System.TimeZoneInfo 类有一个可以完成我想要的功能:
[System.TimeZoneInfo]::Local.GetUtcOffset((Get-Date)).TotalMinutes
给了我+120分钟
IsDaylightSavingTime
类上的静态方法 TimeZoneInfo
从所需的 DateTime
获取此信息:
$now = [DateTime]::Now
[System.TimeZoneInfo]::Local.IsDaylightSavingTime($now) # Returns $True or $False
以下将为您提供 HH::MM 格式的偏移量 + DST
"UTC"+(Get-Date -Format "%K")
PowerShell 打印标准 ISO 8601 时间格式 带有时区偏移量
Get-Date -Format "yyyy-MM-ddTHH:mm:sszzz"
输出:
2024-09-25T09:19:57+08:00