note 51931 added to function.time
| From: | phil at goli dot at | 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