Jens: Datum+1 Tag

Hallo,

ich habe ein Datum ein Datum in der Form 2004-10-14 vorliegen und möchte zu diesem beliebigen Datum einen Tag dazu addieren. Wie mach ich das bzw. wie zerlege ich das Datum so, dass ich es in Mill.-Sek. umrechnen kann und wieder zurück?

Grüße,

Jens

  1. Hallo,

    ich habe ein Datum ein Datum in der Form 2004-10-14 vorliegen und möchte zu diesem beliebigen Datum einen Tag dazu addieren. Wie mach ich das bzw. wie zerlege ich das Datum so, dass ich es in Mill.-Sek. umrechnen kann und wieder zurück?

    Am Anfang hast du das Datum wohl in einer String-Variablen. Mit substr() zerlegst du diesen String in die Bestandteile Jahr, Monat, Tag. Die Teilstrings sollten mit parseInt() in Number-Werte umgewandelt werden (damit aus »05« die Nummer 5 wird). Mit new Date() kannst du dann ein Date-Objekt mit diesen drei Variablen erzeugen. Mit getTime() kannst du den Millisekunden-Wert des Date-Objekts herausbekommen und in einer Variable speichernt. Diesem Wert addierst du soviele Millisekunden, wie ein Tag hat (1000*60*60*24) und schreibst ihn mit der Methode setTime() des Date-Objekts zurück. Mit getFullYear(), getMonth() und getDate() kannst du danach die Bestandteile des neuen Datum auslesen (und sie z.B. zu einem String zusammensetzen).

    Soweit das Konzept. Die Umsetzung solltest du anhand der Quellen schaffen können.

    Mathias

    1. Hi,

      Am Anfang hast du das Datum wohl in einer String-Variablen. Mit substr() zerlegst du diesen String in die Bestandteile Jahr, Monat, Tag. Die Teilstrings sollten mit parseInt() in Number-Werte umgewandelt werden (damit aus »05« die Nummer 5 wird). Mit new Date() kannst du dann ein Date-Objekt mit diesen drei Variablen erzeugen. Mit getTime() kannst du den Millisekunden-Wert des Date-Objekts herausbekommen und in einer Variable speichernt. Diesem Wert addierst du soviele Millisekunden, wie ein Tag hat (1000*60*60*24) und schreibst ihn mit der Methode setTime() des Date-Objekts zurück.

      Dabei ist aber zu berücksichtigen, daß es auch Tage mit 23 und 25 Stunden gibt (Zeitumstellung).

      Wenn ich mich richtig erinnere, geht das aber auch, daß man bei vorhandenem Tag Monat Jahr einfach Tag+1 Monat Jahr zum Erzeugen des Date-Objekts benutzt - falls Tag+1 zu groß ist, wird IIRC Tag und Monat (und ggf auch das Jahr) angepaßt (aus 29 02 2005 wird IIRC automatisch 01 03 2005). Bin jetzt aber zu faul zum Testen, das kann Jens ja machen.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hallo,

        Dabei ist aber zu berücksichtigen, daß es auch Tage mit 23 und 25 Stunden gibt (Zeitumstellung).

        Ja, das hatte ich vergessen.
        d = new Date(); d.setTime((new Date(2004, 9, 30, 12).getTime()) + 1000*60*60*24); alert(d.toTimeString()); gibt tatsächlich 11:00 Uhr aus.

        Wenn ich mich richtig erinnere, geht das aber auch, daß man bei vorhandenem Tag Monat Jahr einfach Tag+1 Monat Jahr zum Erzeugen des Date-Objekts benutzt - falls Tag+1 zu groß ist, wird IIRC Tag und Monat (und ggf auch das Jahr) angepaßt (aus 29 02 2005 wird IIRC automatisch 01 03 2005).

        Das stimmt. Leider ist die JavaScript-Dokumentation von Netscape momentan nicht erreichbar, dort stand dies meiner Erinnerung nach sogar ausdrücklich beschrieben.
        Die Rechenregeln von ECMAScript verstehe ich auf Anhieb nicht, daher kann ich nicht sagen, ob es dort vorgesehen ist.

        Mathias