Frage

Welche Funktion lassen Sie uns wissen, ob ein Datum in VBA in DST ist oder nicht?

War es hilfreich?

Lösung

Für nicht-aktuelle Termine (DST 2007 +):

Zuerst müssen Sie eine Funktion, die Anzahl der spezifischen Wochentag in einem Monat zu finden:

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  

Dann können Sie für den DST Tag überprüfen gegen die folgende Funktion aufruft:

Fall: NDow (Jahr (newdate), 11, 1, 1)
  Frühling: NDow (Jahr (newdate), 3, 2, 1)

Für das aktuelle Datum:

Rufen Sie die Funktion GetTimeZoneInformation Windows-API, und es wird eine ENUM (integer) mit dem Status zurück.

Ich habe den Code für das von Chip Pearson große Excel-Website.

Pearson-Website

Andere Tipps

Für alle fragen, wie für Tageslicht berücksichtigen Zeit in Europa (Mitteleuropa Zeit) zu speichern, modifizierte ich das Skript von Chip Pearson . Der letzte Sonntag im März (2.00 bis 3.00) und Oktober (3.00 bis 2.00) sind die Tage, wenn die Stunde Umschaltung erfolgt.

Code Im Folgenden ist das Klick-Ereignis einer Schaltfläche in 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

Das Modul werden die notwendigen Methoden enthalten hier werden.

Weitere Informationen über DST in Europa.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top