我使用PowerShell命令测试我们的基础设施:在PowerShell中检查时区的与语言无关的方法?
[System.TimeZoneInfo]::Local.Id
它返回像
Eastern Standard Time
我们的服务器字符串都是英文的权利,但我敢肯定,这个测试会失败如果我在非英语窗口上运行它。
有没有办法检查时区,而不必检查它与英文字符串?
我使用PowerShell命令测试我们的基础设施:在PowerShell中检查时区的与语言无关的方法?
[System.TimeZoneInfo]::Local.Id
它返回像
Eastern Standard Time
我们的服务器字符串都是英文的权利,但我敢肯定,这个测试会失败如果我在非英语窗口上运行它。
有没有办法检查时区,而不必检查它与英文字符串?
而不是使用[System.TimeZoneInfo]::Local.Id
使用[System.Timezoneinfo]::Local.BaseUtcOffset
它将根据UTC时间与您正在使用的服务器的时区之间的小时数差异给出结果。
编辑
@LotPings是正确的,因为BaseUtcOffset不会考虑DST,如果你只关注验证时区尚未从标准改变这可能并不重要,但如果它是很重要的,你可以改为使用[System.TimeZoneInfo]::Local.GetUtcOffset($(get-date))
,它将为您提供当前的UTC偏移量。
但是这个信息并不完整,它没有告诉你关于DST的信息,以及如果DST现在/在问日期时有效。 – LotPings
您的正确,我仍然认为这是最好的方法来使用这里来验证时区没有改变,但我已经添加了代码来获得当前的偏移量,而不是基地,如果需要的话。 –
AFAIK,'TimeZoneInfo'类的'Id'属性没有本地化。至少在我的英文电脑上,所有时区都有英文'Id'。 – PetSerAl