Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
860to864
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA: Sommerzeit

VBA: Sommerzeit
17.04.2007 21:44:00
Christian
Hallo bestes Forum,
ich möchte in VBA ermitteln, ob ein Zeitstempel in diversen Logfiles in die deutsche Sommerzeit oder Winterzeit fällt (CET).
Der Zeitstempel im LogFile ist immer GMT (Greenwich Mean Time) - Im Winter sind wir (in Deutschland) ergo GMT+1, im Sommer GMT+2. Die Umstellung erfolgt am letzten Sonntag im März von Winterzeit auf Sommerzeit und am letzten Sonntag im Oktober von Sommerzeit auf Winterzeit.
Die Zeitstempel können entweder <Datum + Uhrzeit> oder nur <Datum> enthalten.
Bsp "nur Datum":
"24.03.2007" -> Winterzeit
"25.03.2007" -> Sommerzeit
Bsp "Datum + Uhrzeit":
"25.03.2007 00:59:00" -> Winterzeit
"25.03.2007 01:00:01" -> Sommerzeit
Ich suche also nach einer Function, die das Datum und optional die Uhrzeit als Eingabe "verträgt" und als Ergebnis "SummerTime = True" oder "SummerTime = False" ausgibt.
Wie kann man das in VBA umsetzen? Gibt es in VBA evt. schon eine Function à la "LocalTime"?
vielen Dank für eure Hilfe
Gruß Christian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Sommerzeit
17.04.2007 22:45:50
Andi
Hi,
hier nur mal ein paar Anregungen:
Mit
If Month(Range("A1")) = 3 And Day(Range("A1")) > 24 And Weekday(Range("A1")) = 1 Then
MsgBox "Umstellung auf Sommerzeit"
End If
kannst Du überprüfen, ob an einem bestimmten Datum auf Sommerzeit umgestellt wurde.
Analog kannst Du natürlich mit
If Month(Range("A1")) = 10 ...
auf Winterzeit prüfen.
An allen Tagen, auf die das nicht zutrifft, ist damit alles klar. Am den beiden 'Umstellungstagen' ist allerdings die Uhrzeit erforderlich, um zwischen Sommerzeit und Winterzeit zu unterscheiden. Umgestellt wird übrigens um 3 Uhr morgens, nicht wie in Deinem Beispiel um 1 Uhr.
Ein Problem gibt es noch, leider kenne ich die Struktur Deiner Daten nicht, und kann Dir deshalb keinen Tip geben, wie man das lösen könnte:
Bei der Umstellung von Sommer- auf Winterzeit wird die Uhr von 3:00 auf 2:00 zurückgedreht. Mit anderen Worten, am letzten Sonntag im Oktober wird die Stunde von 2:00 bis 3:00 zweimal durchlaufen, zuerst als Sommerzeit, dann als Winterzeit. Um welche der beiden Stunden es sich handelt, ist an dem einzelnen Zeitstempel nicht ablesbar. Wenn die Zeitstempel regelmäßig mindestens einmal pro Stunde vergeben werden, könnte man sich mit einem Vergleich mit dem vorhergehenden Stempel behelfen.
Schönen Gruß,
Andi

Anzeige
AW: VBA: Sommerzeit
17.04.2007 23:10:34
Christian
Hallo Andi,
du hast natürlich Recht, was die Uhrzeit betrifft (Umstellung um 02:00:00 nach 03:00:00 bzw. umgkehrt), wenn man es auf CET (Central Europe Time), also unsere Zeit in Deutschland bezieht. Auf GMT (Greenwich Mean Time) bezogen, erfolgt die Umstellung jeweils um 01:00:00.
Unsere Sommerzeit ist GMT+2, unsere Winterzeit ist GMT+1.
Ich hab mit Hilfe des Archivs und eigenen Ansätzen schon mal folgendes zusammen gebastelt. (siehe Code). Ich hab allerdings Probleme, wie ich die optionale Angabe der Uhrzeit hier einbinden kann.
Vielleicht kannst du mir ja dabei helfen.
Vorab schon vielen Dank
Gruß
Christian

Function blnSummerTime(datDate As Date) As Boolean
'Calculate Date of Summertime and Wintertime
'Switch to Summertime: last Sunday of March at 01:00 (GMT)
'Switch to Wintertime: last Sunday of October at 01:00 (GMT)
Dim i as Integer, blnDate As Boolean
If Month(datDate)  10 Then
blnDate = False
ElseIf Month(datDate) > 3 And Month(datDate) = i Then blnDate = True
Case 10: If Day(datDate) 



Sub GetCET()
MsgBox "24.03.2007 " & blnSummerTime("24.03.2007")    'ergibt False -> richtig
MsgBox "25.03.2007 " & blnSummerTime("25.03.2007")    'ergibt True  -> richtig
'MsgBox "25.03.2007 00:59:59 " & blnSummerTime("25.03.2007 00:59:59")   'läuft noch nicht, mü _
sste False ergeben
'MsgBox "25.03.2007 00:01:00 " & blnSummerTime("25.03.2007 00:01:00")   'läuft noch nicht, mü _
sste True ergeben
End Sub


Anzeige
AW: VBA: Sommerzeit
18.04.2007 00:25:00
Sigi
Hi Christian,
hilft dir diese VBA-Funktion?

Function IstSommerzeit(Datum As Date) As Boolean
Dim WiEnde As Date
Dim SoAnfang As Date
Dim SoEnde As Date
Dim WiAnfang As Date
Application.Volatile
WiEnde = DateSerial(Year(Datum), 4, 1) - _
Weekday(DateSerial(Year(Datum), 4, 1), vbMonday) + TimeSerial(2, 0, 0)
SoAnfang = DateSerial(Year(Datum), 4, 1) - _
Weekday(DateSerial(Year(Datum), 4, 1), vbMonday) + TimeSerial(3, 0, 0)
SoEnde = DateSerial(Year(Datum), 11, 1) - _
Weekday(DateSerial(Year(Datum), 11, 1), vbMonday) + TimeSerial(2, 0, 0)
WiAnfang = DateSerial(Year(Datum), 11, 1) - _
Weekday(DateSerial(Year(Datum), 11, 1), vbMonday) + TimeSerial(3, 0, 0)
If Datum = WiEnde And Datum = SoAnfang And Datum = SoEnde And Datum 


Gruß
Sigi

Anzeige
AW: VBA: Sommerzeit
18.04.2007 08:23:17
Gert
Hallo Christian,
hier die Formeln :
Sommerzeit =DATUM(Jahr;4;)-WOCHENTAG(DATUM(JAHR;4;);1)+1
Winterzeit =DATUM(JAHR;11;)-WOCHENTAG(DATUM(JAHR;11;);1)+1
Jahr ist gleich 4stellige Jahreszahl (z.B. 2007)
mfg
Gert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge