Powershell 使用 DST 获取时区

Powershell get timezone with DST

在我使用的 powershell 中

(Get-Timezone).BaseUtcOffset

获取计算机的 UTC 偏移量,它为我的时区提供了 +1h。这在技术上是正确的,因为我在冬天 (UTC+1) 和夏天 (UTC+2) 在 CEST。现在是 DST,所以 CEST (UTC+2) 对我来说所以我想知道如何在 powershell 中获取此信息,因为上面的命令告诉我我的时区是 UTC+1 并且根本没有提到 DST .

作为我目前使用的解决方法

$date = Get-Date
($date - $date.ToUniversalTime()).TotalMinutes

获取我的时区与 UTC 和夏令时的偏移量。它的计算结果为 +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

是的,你可以使用静态方法IsDaylightSavingTime on the TimeZoneInfo class to get this information from a desired DateTime:

$now = [DateTime]::Now
[System.TimeZoneInfo]::Local.IsDaylightSavingTime($now) # Returns $True or $False

谢谢 Bender the Greatest 你让我走上了正确的道路。 class System.TimeZoneInfo 有一个功能可以满足我的要求:

[System.TimeZoneInfo]::Local.GetUtcOffset((Get-Date)).TotalMinutes

给我 +120 分钟