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 分钟
在我使用的 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 分钟