如何检查指定时区的 DST 状态

How to check DST status for specified timezones

我想检查是否有任何指定的时区(我的本地时区除外)是否处于夏令时。

要检查本地时区当前是否为 DST,我正在使用:

Dim today_date As Date = Now.Date
Msgbox(today_date.IsDaylightSavingTime())

我想根据今天的日期检查其他时区("A.U.S. Eastern Standard Time" 和 "New Zealand Standard Time")是否在夏令时。

那么到目前为止我有什么:

Dim AusZoneId As String = "A.U.S. Eastern Standard Time" 
Dim AusZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(AusZoneId)
MsgBox(AusZone.SupportsDaylightSavingTime) 
'Established True or False if TZ supported DST

我想做的是输入一个日期(例如今天),看看这个日期是否符合澳大利亚东部标准时间。

您不应该为 日期 执行此操作,因为这可能是模棱两可的(标准时间是一天的开始,而夏令时是一天的结束,或者反之亦然)而是询问特定时间点是否在夏令时:

Dim zoneId As String = "AUS Eastern Standard Time";   
Dim zone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(zoneId)
Dim dst As Boolean = zone.IsDaylightSavingTime(DateTime.UtcNow)

(当然,也可以使用其他时间点。)我强烈建议您传入 DateTimeKindUtc