Marla: fehlende Tage in Javascript

Hi,

irgendwie bekomm ich es nicht gebacken, mit JS eine Liste der Tage ab 2009-07-01 auszugeben. Im Beispiel fehlt dann z.B. 2010-03-28

[code lang=javascript]
function d2h(date) {
var y=date.getFullYear();
var m=correct_month(date.getMonth());
var d=correct_day(date.getDate());
return y + "-" + m + "-" + d;
}
function h2d(hyphen) {
return (new Date(hyphen.replace(/-/g, "/"))).getTime();
}
function correct_month(month)
{
month++;
if(month>12)
month=1;
if(month<10)
month="0"+month;
return month;
}
function correct_day(day)
{
day=0+day;
if(day<10)
day="0"+day;
return day;
}
function getAllDates() {
start = (new Date(min_date.replace(/-/g, "/"))).getTime();
var dates = [];
var current = start_date;
var dates = [];
z=0;
var cdays=n_days;
while(cdays>0) {
z++;
var tmp = new Date(current);
//dates.push(d2h(tmp));
document.writeln(d2h(tmp)+"<br>");
current = (new Date(current + day_length)).getTime();
cdays--;
}
return dates;
}
var min_date = "2009-07-01";
var start_date = h2d(min_date);
var n_days=500;
var day_length = 86400000;
getAllDates();
/code]

Bitte um Rat

  1. ich behaupte mal dass dank der zeitumstellung nicht jeder tag exakt 86400000 millisekunden lang ist.

    warum iterierst mittels der millisekunden und nicht einfach über die tage?

    --
    for your security, this text has been encrypted by ROT13 twice.
    1. warum iterierst mittels der millisekunden und nicht einfach über die tage?

      wie, wo, was? Sorry, ich steh wohl grad auf dem Schlauch

      1. wie, wo, was? Sorry, ich steh wohl grad auf dem Schlauch

        Die durchläufst alle Tage mittels dieser Schleife. (unwichtiges raus genommen)

          
        while(cdays>0) {  
            var tmp = new Date(current);  
            document.writeln(d2h(tmp)+"<br>");  
            current = (new Date(current + day_length)).getTime();  
        }  
        
        

        Um den nächsten Tag rauszufinden addierst du day_length mit einer Zahl von 86400000 Millisekunden.
        Nur hat eben nicht jeder Tag exakt diese Länge.

        (Nur eine Vermutung, hab deinen Code nicht bis ins Detail angeschaut)

        --
        for your security, this text has been encrypted by ROT13 twice.
      2. warum iterierst mittels der millisekunden und nicht einfach über die tage?
        wie, wo, was? Sorry, ich steh wohl grad auf dem Schlauch

        Ubersetzung:
        Warum zaehlst Du Millisekunden hoch und nicht einfach die Tage?

        --
        Vergesst Chuck Norris.
        Sponge Bob kann unter Wasser grillen!
        1. Nachtrag:

          In http://de.selfhtml.org/javascript/objekte/date.htm#set_date@title=Selfhtml wird darauf aufmerksam gemacht, dass man mit setDate() darauf achten soll einen sinnvollen zwischen 1 und 31 Wert fuer den Tag zu waehlen. Genau das machen wir aber mal nicht und bekommen, was Du willst. Sexy? Sexy!

          --
          Vergesst Chuck Norris.
          Sponge Bob kann unter Wasser grillen!
          1. Sexy? Sexy!

            Allerdings.

            So lässt sich übrigens auch easy heraus finden wie viele Tage ein bestimmter Monat hat:

              
                var d = new Date(2010,5,1);  
                d.setDate(-1);  
                alert( d.getDate() );  
            
            

            Es zeigt sich dass der Mai 31 Tage hat! :)
            (Monate werden von 0-11 durchnummeriert)

            --
            for your security, this text has been encrypted by ROT13 twice.
            1. Scusi, so stimmts:

                
                  var d = new Date(2010,5,1);  
                  d.setDate(-1);  
                  alert( d.getDate() );  
              
              
              --
              for your security, this text has been encrypted by ROT13 twice.
              1. damn
                 ~~~javascript

                var d = new Date(2010,5,1);
                     d.setDate(0);
                     alert( d.getDate() );

                
                -- 
                for your security, this text has been encrypted by ROT13 twice.