note 51931 added to function.time

From: Date: Fri, 15 Apr 2005 14:35:52 +0000
Subject: note 51931 added to function.time
Groups: php.notes 
Request: Send a blank email to php-notes+get-88058@lists.php.net to get a copy of this message
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") } } ---- Manual Page -- http://www.php.net/manual/en/function.time.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+51931 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+51931&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+51931&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+51931&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+51931&report=yes&reason=useless Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+51931&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+51931&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#88058) next »