Alex: Tage zwischen Start und Enddatum ermitteln

hallo leute.
hab folgendes problem:

zwei felder. einmal das anfangsdatum und das enddatum.
die anzahl zwischen den tagen raus zu bekommen ist nicht das problem. aber wie bekomme ich raus, welche tage das sind?

bsp:
startdatum = 08.10.2002
enddatum = 11.10.2002

wie bekommen ich also raus, dass der 09.10.2002 und der 10.10.2002 dazwischen liegen.
man müsste dabei noch die unterschiedliche anzahl der monatstage und den jahreswechsel zwischen start und ende beachten.

es geht um einen buchungsplan für ein hotel.
hotel-braunerhirsch.de

vielen dank für eure hilfe

mfg
alex

  1. zwei felder. einmal das anfangsdatum und das enddatum.
    die anzahl zwischen den tagen raus zu bekommen ist nicht das problem. aber wie bekomme ich raus, welche tage das sind?

    bsp:
    startdatum = 08.10.2002
    enddatum = 11.10.2002

    wie bekommen ich also raus, dass der 09.10.2002 und der 10.10.2002 dazwischen liegen.

    Wie üblich: Beide umwandeln in Sekunden (timestamp, unix time oder wie immer das auch gerade heißen mag), dann jeweils 86400 Sekunden (60 Sekunden * 60 Minuten * 24 Stunden = 1 Tag) zur Startzeit addieren, bis die Endzeit erreicht ist. Die Zwischenergebnisse markieren jeweils einen Tag.

    Gruß,
      soenk.e

    1. oh gott.
      blackout!

      tausend dank soenk.e !!!

      auf das einfachste kommt man einfach nich...

      mfg
      alex

  2. Hallo,

    bsp:
    startdatum = 08.10.2002
    enddatum = 11.10.2002

    wie bekommen ich also raus, dass der 09.10.2002 und der 10.10.2002 dazwischen liegen.
    man müsste dabei noch die unterschiedliche anzahl der monatstage und den jahreswechsel zwischen start und ende beachten.

    Solche Aufgaben kann das Datumsobjekt von JavaScript fast alleine loesen, speziell die Kontrolle von Uebergaengen zwischen Monaten und Jahren sowie Schaltjahren (d. h. es kann auch mit mehr als 31 Tagen im Monat und 12 Monaten im Jahr korrekt umgehen).

    Dieser Ansatz funktioniert mit IE, Netscape (incl. 4.x), Mozilla, Opera:

    startdatum="08.10.2002";
    enddatum="11.10.2002";

    t1=parseInt(startdatum.substr(0,2),10);
    m1=parseInt(startdatum.substr(3,2),10);
    j1=parseInt(startdatum.substr(6,4),10);

    t2=parseInt(enddatum.substr(0,2),10);
    m2=parseInt(enddatum.substr(3,2),10);
    j2=parseInt(enddatum.substr(6,4),10);

    i=1;
    ende=new Date(j2,m2-1,t2);
    while(new Date(j1,m1-1,t1+i) < ende)
    {
      datum=new Date(j1,m1-1,t1+i);
      t=datum.getDate().toString();
      t=(t.length==2)?t:"0"+t;
      m=(datum.getMonth()+1).toString();
      m=(m.length==2)?m:"0"+m;
      j=datum.getFullYear().toString();
      alert(t+"."+m+"."+j);
      i++;
    }

    Ergebnis: 09.10.2002 und 10.10.2002

    Hinweis: Wichtig ist der Radix-Parameter 10 bei parseInt(), um das Oktalsystem bei fuehrende Nullen zu vermeiden.

    MfG, Thomas

    1. funktioniert bereits ohne probleme. ergebnis ab heut abend unter www.hotel-braunerhirsch.de

      gruß
      alex