David: Sieht jemand den Fehler?

Hallo!

Ich habe ein Skript, das jeweils Infos zum aktuellen und zum folgenden Tag anzeigen soll. Das Skript sieht (zumindest der fehlerhafte Teil) wie folgt aus:

var jetzt = new Date();
var DatTag = GetTag(jetzt);
var Monat = GetMonat(jetzt);
var Tag = GetDayOfTheWeek(jetzt);
var Stunde = 0;
var Taganzeige = 0;
var Sonderschalter = 0;

// Aktuellen Tag plus 1
if (Tag == 6) Tag=0; else Tag=Tag+1;
if (Monat == 0 || Monat == 2 || Monat == 4 || Monat == 6 || Monat == 7 || Monat == 9 || Monat == 11) {
 if (DatTag == 31) {DatTag = 1; Monat++;} else DatTag = DatTag + 1;
 }
else {  if (Monat == 1 && DatTag == 28) DatTag = 1;
  else { if (Monat == 3 || Monat == 5 || Monat == 8 || Monat == 10) { if (DatTag == 30) {DatTag = 1; Monat++;}}
    else DatTag = DatTag + 1; }
   }

Wenn der Tag z.B. der 1.7. ist, dann klappt es wunderbar: Vor der Abfrage ist DatTag=1, nach der Abfrage ist DatTag=2. Wenn es aber z.B. der 20.6. ist, dann ist DatTag vor der Abfrage 20 und nach der Abfrage auch!

Jetzt meine Frage: Warum??? Ist da oben irgendwo ein Fehler drin, den ich einfach nicht sehe? Kann mir jemand von Euch weiterhelfen?

Vielen Dank im voraus! :-)

der David

  1. Wenn der Tag z.B. der 1.7. ist, dann klappt es wunderbar: Vor der Abfrage ist DatTag=1, nach der Abfrage ist DatTag=2. Wenn es aber z.B. der 20.6. ist, dann ist DatTag vor der Abfrage 20 und nach der Abfrage auch!

    Was willst du eigentlich erreichen?
    Mir scheint das sehr umständlich (neben der Fehlerhaftigkeit) zu sein.

    Jetzt meine Frage: Warum??? Ist da oben irgendwo ein Fehler drin, den ich einfach nicht sehe? Kann mir jemand von Euch weiterhelfen?

    Wenn du Wissen willst was der nächste Tag ist, nimm Date.getTime und addiere 1000 x 60 x 60 x 24 dazu.

    Struppi.

  2. Hi David,

    Ich habe ein Skript, ...

    Jetzt meine Frage: Warum??? Ist da oben irgendwo ein Fehler drin, den ich einfach nicht sehe? Kann mir jemand von Euch weiterhelfen?

    Auf den ersten Blick passen die { und } nicht zusammen, ebenso wie das letzte else kein passendes if hat. Du baust am einfachsten in jedes if einen alert() ein. Dann müsstest du relativ schnell rausfinden an welcher stelle es klemmt.

    HTH

    Maxx

  3. Hi,

    var jetzt = new Date();
    var DatTag = GetTag(jetzt);

    Was macht diese Funktion?

    var Monat = GetMonat(jetzt);

    Was macht diese Funktion?

    var Tag = GetDayOfTheWeek(jetzt);

    var Stunde = 0;
    var Taganzeige = 0;
    var Sonderschalter = 0;

    // Aktuellen Tag plus 1

    Warum selber rechnen? Laß Dir ein Datum zum Zeitpunkt Jetzt + 24 Stunden erzeugen (addiere auf jetzt.getTime() die nötige Anzahl Millisekunden drauf.

    if (Tag == 6) Tag=0; else Tag=Tag+1;

    Wenn schon, dann finde ich
    Tag = (Tag + 1) % 7;
    schöner.

    Dein Teil hat noch mindestens einen weiteren Fehler.
    Wenn DatTag auf 1 gesetzt wird, zählst Du den Monat hoch.
    Nach dem 31.12. (31. Dezember) kommt dann der 1.13. ...

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Hi,

      Dein Teil hat noch mindestens einen weiteren Fehler.
      Wenn DatTag auf 1 gesetzt wird, zählst Du den Monat hoch.
      Nach dem 31.12. (31. Dezember) kommt dann der 1.13. ...

      Und noch einen: Schaltjahre werden auch nicht berücksichtig.

      Grüße,

      Ronny