Powershell 使用 DST 获取时区

问题描述 投票:0回答:4

在我使用的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
powershell utc dst timezone-offset
4个回答
2
投票

谢谢你Bender the Greatest你让我走上了正确的道路。 System.TimeZoneInfo 类有一个可以完成我想要的功能:

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

给了我+120分钟


1
投票

是的,您可以使用

IsDaylightSavingTime
类上的静态方法
TimeZoneInfo
从所需的
DateTime
获取此信息:

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

0
投票

以下将为您提供 HH::MM 格式的偏移量 + DST

"UTC"+(Get-Date -Format "%K")

0
投票

PowerShell 打印标准 ISO 8601 时间格式 带有时区偏移量

Get-Date -Format "yyyy-MM-ddTHH:mm:sszzz"

输出:

2024-09-25T09:19:57+08:00

© www.soinside.com 2019 - 2024. All rights reserved.