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

时间:2015-09-22 09:18:35

标签: vb.net timezone dst

我想检查是否有任何指定的时区(我的本地时区除外)是否在DST中。

要检查当前时区当前是否正在使用DST:

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

我想根据今天的日期检查其他时区(“A.U.S.东部标准时间”和“新西兰标准时间”)是否在夏令时。

所以我到目前为止:

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

我想要做的是输入日期(例如今天)并根据AUS东部标准时间查看此日期是否在夏令时。

1 个答案:

答案 0 :(得分:2)

你不应该为日期这样做,因为这可能是模棱两可的(标准时间的一天开始和白天时间的结束,反之亦然)而是询问特定时间点是否在白天:

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

(或者当然也可以使用其他一些时间点。)我强烈建议你传递DateTime Kind Utc