Robert-braucht-Hilfe: Datum Range (von - bis)

Hallo,

Ich würde gerne alle Wochenenden aus einer Range
von zwei Daten berechnen. z.B.:

Datum1 (von): 01.01.2008
Datum2 (bis): 10.01.2008

Da wären dies quasi der Samstag und Sonntag welcher
in diesen Zeitraum stehen würden. Kann man dies in
Javascript berechnen?

Wie man den Wochentag herausfindet weiß ich (getDay())
aber leider nur für einen Tag, hier ist es eine "Range"
und ich weiß nicht wie ich alle Tage in dieser Range
prüfen kann bzw. jeden einzelnen Tag dieser Range.

MfG.

  1. Eigentlich ganz einfach. Berechne zunächst den Abstand zum nächsten Samstag (der Sonntag kommt immer direkt nach dem Samstag - obwohl ich mir da in manchen US-Staaten nicht ganz sicher bin). Dann inkrementiere den Tag immer um eins, bis Du ans Enddatum gelangst, teste den Wochentag auf Wochenende und schreibe die Daten von Wochenendtagen in ein Array (Du kannst auch dazu getDay() verwenden, auch wenn es schneller geht, indem man den Modulo des Inkrementors vom letzten Wochenende aus nimmt). Fertig.

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo vielen dank für deine Antwort, so ähnlich
      hatte ich es gedanklich auch im Kopf aber es mangelt
      momentan an der Umsetzung.

      Kannst du mir vll. ein kleines Beispiel geben?

      MfG.

      1. Hallo vielen dank für deine Antwort, so ähnlich
        hatte ich es gedanklich auch im Kopf aber es mangelt
        momentan an der Umsetzung.

        Kannst du mir vll. ein kleines Beispiel geben?

        MfG.

        Das Problem ist auch, das man nur mit Millisekunden
        den Tag zum Datum inkrementieren kann, danach aber
        kann man den Wochentag aus den Millisekunden nicht
        mehr herausbekommen.

        1. Mahlzeit Robert-braucht-Hilfe,

          Das Problem ist auch, das man nur mit Millisekunden
          den Tag zum Datum inkrementieren kann, danach aber
          kann man den Wochentag aus den Millisekunden nicht
          mehr herausbekommen.

          Das ist nicht richtig. Bei der Instanziierung eines http://de.selfhtml.org/javascript/objekte/date.htm@title=Date-Objekts kannst Du sehr wohl einen Zeitpunkt - auch in Millisekunden seit 1. Januar 1970, 0:00 Uhr UTC - angeben.

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          1. Mahlzeit Robert-braucht-Hilfe,

            Das Problem ist auch, das man nur mit Millisekunden
            den Tag zum Datum inkrementieren kann, danach aber
            kann man den Wochentag aus den Millisekunden nicht
            mehr herausbekommen.

            Das ist nicht richtig. Bei der Instanziierung eines http://de.selfhtml.org/javascript/objekte/date.htm@title=Date-Objekts kannst Du sehr wohl einen Zeitpunkt - auch in Millisekunden seit 1. Januar 1970, 0:00 Uhr UTC - angeben.

            MfG,
            EKKi

            Es klappt einfach nicht :(.

            Ich würde es in einer do while Schleife machen wollen
            z.B. so:

            do{
            datum1 + tag;
            }while(datum1 > datum2);

            und dann? das rechnen klappt auch nicht :(..

            Habt ihr bitte ein Besipiel für mich?

            1. Hallo,

              Habt ihr bitte ein Besipiel für mich?

              Schau dir mal die Methodenübersicht unter http://de.selfhtml.org/javascript/objekte/date.htm an (und beachte mein Posting). Die dürfte schon relativ selbsterklärend sein. Das Auslesen und Setzen der Einzelteile des Datums funktioniert über diese Methoden der Datumsobjekte.

              Datumsobjekte kannst du tatsächlich mit < bzw. > vergleichen.

              Mathias

              1. Danke Mathias,

                ich werde es probieren.

                1. Danke Mathias,

                  ich werde es probieren.

                  nWochentage = 0;
                  do{
                  var he = von.setDate(von.getDate()+1);
                  nWochentage++;
                  }while(vondatum > bisdatum);
                  alert(nWochentage);

                  klappt nicht :-/

                  1. Hallo Robert-braucht-Hilfe,

                    }while(vondatum > bisdatum);

                    Die Bedingung in der Schleife muß wahr sein, damit sie läuft. Deine Bedingung sieht im Moment so aus: "mache solange das 'vondatum' noch größer ist als das 'bisdatum' ansonsten/danach breche ab".

                    Mit freundlichem Gruß
                    Micha

        2. Hallo,

          Das Problem ist auch, das man nur mit Millisekunden
          den Tag zum Datum inkrementieren kann

          Stimmt überhaupt nicht.

          var datum = new Date;
          datum.setDate( datum.getDate() + 1 ) ;
          alert("Morgen ist der " + datum.getDate() + "." + (datum.getMonth() + 1) + ".");

          Jetzt fragst du dich: Geht das auch mit dem 29., 30. oder 31. - ja, er springt, wenn man den Monatstag auf den 30., 31. bzw. 32. setzt, automatisch in den nächsten Monat.

          Dasselbe gibt übrigens auch bei Monaten. Der dreizehnte Monat ist dann der erste im neuen Jahr usw.

          danach aber kann man den Wochentag aus den Millisekunden nicht mehr herausbekommen.

          Stimmt auch nicht (siehe Ekki). Ist aber auch in den meisten Fällen gänzlich unnötig, wenn man obiges Verhalten kennt!

          Mathias