Christian: strtotime und die Winterzeitumstellung

'n Abend allerseits,

folgender Code...

<?php
$a = array("Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday");
for($i=0;$i<7;$i++){
 $s = strtotime("this $a[$i]");
 echo $s."<br>".date("r",$s)."<br><br>";
}
?>

... gibt Folgendes aus:

1130536800
Sat, 29 Oct 2005 00:00:00 +0200

1130623200
Sun, 30 Oct 2005 00:00:00 +0200

1130709600
Sun, 30 Oct 2005 23:00:00 +0100

1130796000
Mon, 31 Oct 2005 23:00:00 +0100

1130882400
Tue, 1 Nov 2005 23:00:00 +0100

1130968800
Wed, 2 Nov 2005 23:00:00 +0100

1131055200
Thu, 3 Nov 2005 23:00:00 +0100

Ich habe also das Problem, dass mir durch die Umstellung auf Winterzeit unter Benutzung von strtotime("this ...") jeweils eine Stunde zu dem gewünschten Tag fehlt.

Ich hätte auch wirklich gern den Timestamp von 0.00 Uhr, also pauschal ne Stunde draufrechnen würde eventuell an anderer Stelle Probleme bereiten, was ich jetzt aber auch nicht überblicken kann.

Für Lösungsvorschläge wäre ich dankbar.

Grüße aus Münster
Christian

  1. hi,

    Ich habe also das Problem, dass mir durch die Umstellung auf Winterzeit unter Benutzung von strtotime("this ...") jeweils eine Stunde zu dem gewünschten Tag fehlt.

    Bitte was?
    Keine Angst, es gehen keine Stunden einfach "verloren".

    1130536800
    Sat, 29 Oct 2005 00:00:00 +0200

    1130623200
    Sun, 30 Oct 2005 00:00:00 +0200

    1130709600
    Sun, 30 Oct 2005 23:00:00 +0100

    Fällt dir hier was auf?
    Es ist nicht mehr +0200, also GMT plus zwei Stunden, sondern nur noch +0100.
    Wo also fehlt da jetzt irgendwas?

    Ich hätte auch wirklich gern den Timestamp von 0.00 Uhr

    Dann nutze doch mktime() o.ä.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi,

      Ich habe also das Problem, dass mir durch die Umstellung auf Winterzeit unter Benutzung von strtotime("this ...") jeweils eine Stunde zu dem gewünschten Tag fehlt.

      Bitte was?
      Keine Angst, es gehen keine Stunden einfach "verloren".

      Ich sagte ja auch nicht, dass eine Stunde verloren gegangen ist...

      Fällt dir hier was auf?
      Es ist nicht mehr +0200, also GMT plus zwei Stunden, sondern nur noch +0100.

      Ja, das ist mir aufgefallen. Aber was bringt mir die Erkenntnis?

      Ich hätte auch wirklich gern den Timestamp von 0.00 Uhr

      Dann nutze doch mktime() o.ä.

      ...
      Dann muss ich also erstmal checken, welcher Tag ist und dann so und so viel Tage draufrechnen?
      Die Funktion strtotime gibts ja nicht umsonst... gibts da keine bessere Lösung?

      Gruß
      Christian

      1. Gibt's vielleicht eine Funktion, die mir sagen kann, ob der Timestamp in der Sommer- oder Winterzeit liegt?

        Hey, ich meine, selbst Win95 hat das mit der Zeitumstellung gemerkt, das muss doch auch irgendwie in PHP hinzukriegen sein?

        Wenns Winterzeit ist, lass ich halt immer 3600 addieren...

        Grüße
        Christian

        1. echo $begrüßung;

          Gibt's vielleicht eine Funktion, die mir sagen kann, ob der Timestamp in der Sommer- oder Winterzeit liegt?

          date('I', $timestamp);

          Wenns Winterzeit ist, lass ich halt immer 3600 addieren...

          Das PHP-Handbuch gibt auf den Seiten zu den Datums- und Zeit-Funktionen einige Hinweise, wie man mit dem Sommerzeit-Problem umgehen kann.

          echo "$verabschiedung $name";

  2. echo $begrüßung;

    Ich habe also das Problem, dass mir durch die Umstellung auf Winterzeit unter Benutzung von strtotime("this ...") jeweils eine Stunde zu dem gewünschten Tag fehlt.

    Ich hätte auch wirklich gern den Timestamp von 0.00 Uhr, also pauschal ne Stunde draufrechnen würde eventuell an anderer Stelle Probleme bereiten, was ich jetzt aber auch nicht überblicken kann.

    Der Timestamp ist nun mal so definiert, dass er die Anzahl der Sekunden seit 01.01.1970 00:00 Uhr und zwar in GMT/UTC angibt. Er ist somit weltweit eindeutig und lässt sich auch nicht durch lokale und gesetzliche Besonderheiten beeinflussen.

    echo "$verabschiedung $name";