date-Sorgen, Monat zu viel, Stunde zu wenig...
Deus Figendi
- javascript
1 MudGuard
Hallo,
ich bin blutiger Anfänger in JavaScript (vor ca. 1 Woche erlernt) und hänge gerade an einer Funktion, die nicht macht was sie soll. Die Funktion soll ein einem GreaseMonkey-Script laufen und bei der Eingabe von Daten im CMS dienen. Hier die Funktion, die nicht will (vereinfacht):
function starttime_24 (incomplete_timename,event_object,time2add) {
var date_object = new Date();
date_object.setTime(date_object.getTime()+(time2add * 24 * 60 * 60 * 1000));
date_object.setSeconds(0);
date_object.setMinutes(0);
date_object.setHours(0);
var timestamp = date_object.getTime() / 1000;
var timestamp = Math.round(timestamp);
alert (timestamp+"\n"+date_object.getDate()+"-"+date_object.getMonth()+"-"+date_object.getFullYear());
}
Statt alert wird das eigentlich in <input>s eingetragen, aber der Fehler tritt auch so auf.
Parameter:
* incomplete_timename = name des Input-Elements, in das später geschrieben wird
* event_object = das übergebene Event
* time2add = Anzahl der Tage, die zum Datum hinzugefügt werden sollen.
Der Fehler: Naja also im Moment erzeugt die Funktion folgende Ausgabe:
1227740400
27-10-2008
Der timestamp ist also eine Stunde zu klein und die Datums-Ausgabe einen Monat. Klar könnte ich ein workaround schreiben, aber das kann ja nicht der Sinn der Sache sein.
Der Fehler tritt auch auf wenn ich das Datum auslese (timestamp aus einem hidden input) und der Monats-Fehler bleibt auch erhalten, wenn ich die Zeit nicht auf 0:0:00 setze.
Was habe ich falsch gemacht?
Der Stundenfehler könnte vielleicht noch an einer Zeitzone oder Sommerzeit oder sowas liegen, keine Ahnung, aber der Monatsfehler ist mir gänzlich unerklärlich.
Nunja, schönen Dank im Voraus schon mal
Gruß $me
Hi,
Der Fehler: Naja also im Moment erzeugt die Funktion folgende Ausgabe:
1227740400
27-10-2008
month hat Werte von 0 bis 11, nicht 1 bis 12.
Der timestamp ist also eine Stunde zu klein und die Datums-Ausgabe einen Monat.
Die Stunde könnte der Unterschied zwischen MEZ und UTC sein.
cu,
Andreas
Dankeschön, werde das berücksichtigen.