Klaus1: Im Javascript Tage zu Datum addieren?

Hallo,

ich bin offenbar zu blöd, denn ich sehe den Fehler nicht. Ich möchte eigentlich nur zu einem bestimmten Datum Tage dazu addieren oder abziehen. Dafür hatte ich eigentlich folgendes Script gedacht:

strdate = "2018-03-20";
thedate = new Date(strdate);
thedate.setDate(thedate.getDate() + 1);   // 1 Tag dazu addieren
d = thedate.getDate();
m = thedate.getMonth();
y = thedate.getFullYear();
alert(d+"."+m+"."+y);
alert(thedate);

Herauskommt hier aber für mich unerwarteterweise: 03.02.2018 (???) Wenn ich das SetDate weglasse und nur wieder Tag, Monat und Jahr extrahiere: 02.02.2018 Das Rechnen klappt zwar soweit, aber warum mit dem falschen Ausgangsdatum?

Gebe ich das erstellte thedate aus, erscheint noch korrekt: Tue Mar 20 2018 01:00:00 GMT+0100

Wo mache ich den Fehler?

Klaus

  1. Hi,

    strdate = "2018-03-20";
    thedate = new Date(strdate);
    thedate.setDate(thedate.getDate() + 1);   // 1 Tag dazu addieren
    d = thedate.getDate();
    m = thedate.getMonth();
    y = thedate.getFullYear();
    alert(d+"."+m+"."+y);
    alert(thedate);
    

    getMonth liefert den Monat im Bereich 0 bis 11, nicht 1 bis 12.

    cu,
    Andreas a/k/a MudGuard

  2. Tach!

    strdate = "2018-03-20";
    thedate = new Date(strdate);
    thedate.setDate(thedate.getDate() + 1);   // 1 Tag dazu addieren
    d = thedate.getDate();
    m = thedate.getMonth();
    y = thedate.getFullYear();
    alert(d+"."+m+"."+y);
    alert(thedate);
    

    Herauskommt hier aber für mich unerwarteterweise: 03.02.2018 (???)

    Kann ich nicht nachvollziehen. Der gezeigte Code ergibt 21.2.2018. Dass dort der Monat 2 statt 3 steht, liegt an der Arbeitsweise von getMonth(), denn das gibt den Monat 0-basiert zurück. Du musst da also eine 1 addieren, um auf eine ordentliche Monatszahl zu kommen. Oder du nimmst toLocaleDateString() für die Ausgabe.

    Warum du aber als Tag den 3. bekommst, und wo die führenden Nullen herkommen, geht aus dem Code nicht hervor.

    dedlfix.

    1. Hallo dedlfix,

      dito. Vielleicht eine merkwürdige Regionaleinstllung auf dem Testrechner?

      Klaus, probier das doch mal in einem Web-Labor (z.B. codepen.io oder jsfiddle.net)

      Rolf

      --
      sumpsi - posui - clusi
      1. Hallo,

        sorry für die späte Antwort... JSFiddle zeigt mir dasselbe Ergebnis:

        https://jsfiddle.net/088n76xp/

        Gruß,

        Klaus

        1. Tach!

          sorry für die späte Antwort... JSFiddle zeigt mir dasselbe Ergebnis:

          https://jsfiddle.net/088n76xp/

          getDay() und getDate() sind nicht dasselbe.

          dedlfix.

        2. Hallo,

          hab den Fehler finden können, ich hatte im Script anstelle von getDate getDay stehen, das mir den Wochentag zurückgeliefert hatte. Daher das falsche Ergebnis.

          Sorry... und danke.

          Klaus