fehlende Tage in Javascript
Marla
- javascript
0 zaphod19840 Marla0 zaphod19840 Steel0 Steel0 zaphod1984
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
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?
warum iterierst mittels der millisekunden und nicht einfach über die tage?
wie, wo, was? Sorry, ich steh wohl grad auf dem Schlauch
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)
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?
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!
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)
Scusi, so stimmts:
var d = new Date(2010,5,1);
d.setDate(-1);
alert( d.getDate() );
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.