HyperDrummer: Probleme bei Datumsfunktion

Hallo,
ich hab hier ein riesen Problem und weiß nicht an was es liegt. Ich habe einen Kalender geschrieben und habe das mit dem Skript unten gemacht. Bisher hat eigentlich alles funktioniert, jetzt habe ich gesehen, daß im Oktober jeweils der letzte Sonntag doppelt dargestellt wird. Egal welches Jahr ich auswähle, es ist immer der letzte Sonntag. Hoffentlich könnt ihr mir helfen, ich finde den Fehler nicht. Hier der Quellcode:

list($jahr,$monat,$tag) = split ("-", $datum);

$start_kommentar = mktime ( 0, 0, 0, $monat, 1, $jahr );
$kommentarArr = getdate($start_kommentar);

for ( $zaehler=0; $zaehler < (6*7); $zaehler++ ) {
      $tagArr = getdate( $start_kommentar );
      if ( (($zaehler) % 7) == 0 ) {
        if ( $tagArr[mon] != $monat )
          break;
      }

if ( $zaehler < $kommentarArr[wday] || $tagArr[mon] != $monat ) {
      }
      else {
        $tag_zahl = $tagArr[mday];
        if ($tag_zahl < 10) {
          $tag_zahl = "0" . $tag_zahl;
        }
        $monat_zahl = $tagArr[mon];
        if ($monat_zahl < 10) {
          $monat_zahl = "0" . $monat_zahl;
        }
        $tag = wochentag($tagArr[wday]);

$datum_neu = $jahr . "-" . $monat_zahl . "-" . $tag_zahl;

if ($tag=="Sa" or $tag=="So") {
          echo "\t<tr>";
          echo "<td bgcolor='#C0C0C0' valign='top'>$tag</td><td bgcolor='#C0C0C0' valign='middle'>$tag_zahl.$monat_zahl</td>";

} elseif ($feiertage[$datum_neu]==1) {
          echo "\t<tr>";
          echo "<td bgcolor='#ACBF2E' valign='top'>$tag</td>";
          echo "<td bgcolor='#ACBF2E' valign='top'>$tag_zahl.$monat_zahl</td>";

echo "</tr>\n";
        } elseif ($urlaubstage[$datum_neu]==1) {
          echo "\t<tr>";
          echo "<td bgcolor='#AA000C' valign='top'>$tag</td>";
          echo "<td bgcolor='#AA000C' valign='top'>$tag_zahl.$monat_zahl</td>";

} else {
          echo "\t<tr>";
          echo "<td valign='top'>$tag</td>";
          echo "<td valign='top'>$tag_zahl.$monat_zahl</td>";

$start_kommentar += EINTAG;
      }
    }

  1. hi,

    ich hab hier ein riesen Problem und weiß nicht an was es liegt. Ich habe einen Kalender geschrieben und habe das mit dem Skript unten gemacht.

    habe jetzt keine lust, mich da einzuarbeiten, was genau das macht - wenn es wenigstens halbwegs vernünftig kommentiert wäre, aber so ...

    Bisher hat eigentlich alles funktioniert, jetzt habe ich gesehen, daß im Oktober jeweils der letzte Sonntag doppelt dargestellt wird. Egal welches Jahr ich auswähle, es ist immer der letzte Sonntag.

    für solche probleme kann der wechsel von sommer- auf winterzeit verantwortlich sein.
    du erstellst dir ja dein startdatum mittels
    mktime ( 0, 0, 0, $monat, 1, $jahr );
    also um null uhr.
    wenn jetzt der wechsel von sommer- auf winterzeit erfolgt, wird eine stunde bzw. 3600 sekunden abgezogen - damit ist der timestamp eines tages um null uhr plötzlich der des vorherigen tages um 23 uhr.

    ist nur eine vermutung, dass es damit zusammenhängen _könnte_ - wie gesagt, ich hab mir das script nicht genauer angesehen, aber der zeitpunkt immer im oktober könnte dafür sprechen ...

    gruss,
    wahsaga

    1. Ja, stimmt genau, an dem muß es liegen. Das Script müsste ansonsten soweit eigentlich richtig sein, hat ja bisher jeden Monat alles richtig angezeigt.

      Was kann ich dann dagegen tun? Irgendwie ne Abfrage, ob es der letzte Sonntag im Oktober ist und dann manuell wieder auf 0 Uhr setzen oder einfach generell die Uhrzeit auf 1:00 Uhr morgens setzen, dann wär ich ja wieder in der richtigen Stunde.

      P.S.:Sorry daß ich den Quellcode nicht kommtiert habe, aber ich bin halt faul (fühl mich schuldig :-) )

      1. hi,

        Was kann ich dann dagegen tun? Irgendwie ne Abfrage, ob es der letzte Sonntag im Oktober ist und dann manuell wieder auf 0 Uhr setzen oder einfach generell die Uhrzeit auf 1:00 Uhr morgens setzen, dann wär ich ja wieder in der richtigen Stunde.

        ja, wäre wohl am einfachsten.
        das startdatum einfach mit zwölf uhr mittags als zeitangabe erstellen, dann kannste ne stunde draufaddieren oder abziehen, ohne das es gleich den tag wechselt.
        aber gründlich testen dann, nicht dass du evtl. noch andere, verborgene fallstricke übersiehst.

        gruss,
        wahsaga