什么功能会告诉我们VBA中的日期是否在夏令时?

有帮助吗?

解决方案

对于非当前日期(DST 2007 +):

首先,您需要一个函数来查找一个月中特定工作日的数量:

Public Function NDow(Y As Integer, M As Integer, _
                N As Integer, DOW As Integer) As Date  

' Returns Date of Nth Day of the Week in Month  

NDow = DateSerial(Y, M, (8 - Weekday(DateSerial(Y, M, 1), _
              (DOW + 1) Mod 8)) + ((N - 1) * 7))  

End Function  

然后,您可以检查DST日与以下函数调用:

秋季:NDow(年(新日),11,1,1)
  春天:NDow(年(新),3,2,1)

对于当前日期:

调用Windows API函数GetTimeZoneInformation, 它将返回状态为的枚举(整数)。

我从Chip Pearson的Excel网站上获得了这个代码。

Pearson的网站

其他提示

对于想知道如何计算欧洲夏令时(中欧时间)的人,我从 Chip Pearson 。 3月的最后一个星期日(凌晨2点到凌晨3点)和10月(凌晨3点到凌晨2点)是小时切换发生的日子。

以下代码是Excel中按钮的点击事件:

Dim dates As String
dates = "A1:A20"

For Each c In Worksheets("Sheet1").Range(dates).Cells
    If (IsDateWithinDST(c.Value)) Then
        c.Value = DateAdd("h", 1, c.Value)
    End If
Next

包含必要方法的模块可在此处找到。

有关DST在欧洲的更多信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top