note 51931 rejected from function.time by betz

From: Date: Fri, 15 Apr 2005 14:46:05 +0000
Subject: note 51931 rejected from function.time by betz
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-88059@lists.php.net to get a copy of this message
Note Submitter: phil at goli dot at ---- This function returns the correct DST time for EU countries. Change $TZOffset for your timezone. Use myDST() instead of time(). Other examples of usage: getdate(myDST()); date('H:i:s', myDST()); getdate(myDST()); function myDST() { $TZOffset = 1; $myDebug = false; // MEZ = UTC + TZOffset: $myMEZ = mktime(gmdate("H") + $TZOffset); $myMEZ_year = date("Y", $myMEZ); if ($myDebug) { echo 'TZOffset = '.$TZOffset.'<br>'; } if ($myDebug) { echo 'MEZ = UTC + TZOffset = '.date( "d.m.Y H:i:s", $myMEZ).'<br>'; } // Im Jahr 2002 faellt der 31.3. auf einen Sonntag - auch fuer diesen Fall wird das korrekte Ergebnis geliefert: // echo date("d.m.Y", strtotime("last Sunday", mktime(0, 0, 0, 4, 1, 2002))); // Ergebnis musz der 31.3.2002 sein // Im Jahr 2007 faellt der 1.4. auf einen Sonntag - auch fuer diesen Fall wird das korrekte Ergebnis geliefert: // echo date("d.m.Y", strtotime("last Sunday", mktime(0, 0, 0, 4, 1, 2007))); // Ergebnis musz der 25.3.2007 sein, da der 1.4.2007 ein Sonntag ist // Richtlinie 2000/84/EG vom 19. Januar 2001 zur Regelung der Sommerzeit, Artikel 2: // Ab dem Jahr 2002 beginnt die Sommerzeit in jedem Mitgliedstaat am letzten Sonntag im März um 1 Uhr morgens Weltzeit. // ------------ // Deutsche Verordnung vom 12.07.2001 (veröffentlicht am 18.07.2001 im Bundesgesetzblatt Jahrgang 2001 Teil I Nr. 35): // Die mitteleuropäische Sommerzeit beginnt jeweils am letzten Sonntag im März um 2 Uhr mitteleuropäischer Zeit. Im Zeitpunkt des // Beginns der Sommerzeit wird die Stundenzählung um eine Stunde von 2 Uhr auf 3 Uhr vorgestellt (§ 2 Abs. 1). $tmp = strtotime("last Sunday", mktime(0, 0, 0, 4, 1, $myMEZ_year)); $myLastSundayMarch = mktime(2, 0, 0, date("m", $tmp), date("d", $tmp), date("Y", $tmp)); if ($myDebug) { echo 'Last sunday in march: '.date("d.m.Y H:i:s", $myLastSundayMarch).'<br>'; } // Richtlinie 2000/84/EG vom 19. Januar 2001 zur Regelung der Sommerzeit, Artikel 3: // Ab dem Jahr 2002 endet die Sommerzeit in jedem Mitgliedstaat am letzten Sonntag im Oktober um 1 Uhr morgens Weltzeit. // ------------ // Deutsche Verordnung vom 12.07.2001 (veröffentlicht am 18.07.2001 im Bundesgesetzblatt Jahrgang 2001 Teil I Nr. 35): // Die mitteleuropäische Sommerzeit endet jeweils am letzten Sonntag im Oktober um 3 Uhr mitteleuropäischer Sommerzeit. Im Zeitpunkt // des Endes der Sommerzeit wird die Stundenzählung um eine Stunde von 3 Uhr auf 2 Uhr zurückgestellt. Die Stunde von 2 Uhr bis 3 Uhr // erscheint dabei zweimal. Die erste Stunde (von 2 Uhr bis 3 Uhr mitteleuropäischer Sommerzeit) wird mit 2 A und die zweite Stunde // (von 2 Uhr bis 3 Uhr mitteleuropäischer Zeit) mit 2 B bezeichnet (§ 2 Abs. 2). $tmp = strtotime("last Sunday", mktime(0, 0, 0, 11, 1, $myMEZ_year)); $myLastSundayOctober = mktime(3, 0, 0, date("m", $tmp), date("d", $tmp), date("Y", $tmp)); if ($myDebug) { echo 'Last sunday in october: '.date("d.m.Y H:i:s", $myLastSundayOctober).'<br>'; } if ( ($myMEZ >= $myLastSundayMarch) && ($myMEZ < $myLastSundayOctober) ) { return mktime(gmdate("H") + $TZOffset + 1); // Sommerzeit } else { return mktime(gmdate("H") + $TZOffset); // Normalzeit ("Winterzeit") } }

« previous php.notes (#88059) next »