Javascript: Tage zu heutigem Datum addieren
Linuchs
- javascript
0 Matthias Apsel0 dedlfix
0 Gunnar Bittersmann0 pl
Moin,
ich habe das Datumsformat in Javascript nicht verstanden, es ist nicht richtig dokumentiert.
Möchte das heutige Datum in der Form 2017-01-28
haben. Ist das wirklich so kompliziert?
var jetzt = new Date();
var jjjj = jetzt.getFullYear();
var mm = '0' + (jetzt.getMonth() + 1);
mm = mm.slice(-2);
var tt = '0' + jetzt.getDate();
tt = tt.slice(-2);
heute = jjjj + '-' + mm + '-' + tt;
Und dann möchte ich das Datum in 7 Tagen haben. SelfHTML schreibt:
Die Einheit, in der in JavaScript intern Zeit berechnet wird, ist eine Millisekunde.
Ich addiere also die Millisekunden für 6 Tage hinzu
var jetzt = new Date() +6000 *86400; // ms addieren fuer heute +6 Tage
var jjjj = jetzt.getFullYear();
var mm = '0' + (jetzt.getMonth() + 1);
mm = mm.slice(-2);
var tt = '0' + jetzt.getDate();
tt = tt.slice(-2);
woche = jjjj + '-' + mm + '-' + tt;
bringt die Fehlermeldung jetzt.getFullYear is not a function
Wenn ich dem SelfHTML-Vorschlag Objektname = new Date(Millisekunden);
folge, kommt
Millisekunden is not defined
Wie geht's? Das ist doch in PHP sooo einfach ...
Linuchs
Hallo Linuchs,
Du kannst zu einem Datumsobjekt nicht einfach irgendwas addieren.
Bis demnächst
Matthias
Tach!
Du kannst zu einem Datumsobjekt nicht einfach irgendwas addieren.
Also, können kann man schon. Nur sollte man, zum Beispiel mit console.log(), sich anschauen, was dabei rausgekommen ist, wenn das jetzt
schon angemeckert wird.
dedlfix.
@@Linuchs
ich habe das Datumsformat in Javascript nicht verstanden, es ist nicht richtig dokumentiert.
Wenn ich nach „javascript date“ suche, erhalte ich folgende Treffer.
Bei welchem würdest du nachschlagen?
Möchte das heutige Datum in der Form
2017-01-28
haben. Ist das wirklich so kompliziert?
Und dann möchte ich das Datum in 7 Tagen haben. SelfHTML schreibt:
Ich addiere also die Millisekunden für 6 Tage hinzu
Warum 6, wenn du das Datum in 7 Tagen haben möchtest?
Wie Matthias schon sagte, kannst du das nicht zum Objekt addieren. Wohl aber zu der Anzahl der „Millisekunden“[1] ab 1970-01-01T00:00Z.
Zu beachten ist dabei, dass du eventuell nicht das Datum von 7 (oder 6?) Tagen später erhältst, wenn die Umstellung auf Sommer- oder Normalzeit in den Zeitrahmen fällt. Da müsstest du die Uhrzeit auf einen sicheren Wert setzen, z.B. 0:00 Uhr.
LLAP 🖖
Tach!
Zu beachten ist dabei, dass du eventuell nicht das Datum von 7 (oder 6?) Tagen später erhältst, wenn die Umstellung auf Sommer- oder Normalzeit in den Zeitrahmen fällt. Da müsstest du die Uhrzeit auf einen sicheren Wert setzen, z.B. 0:00 Uhr.
0:00 Uhr ist aber gerade der nicht sichere Wert (den alle nehmen und damit auf die Nase fallen). Bei einer Zeitverschiebung von ±1 Stunde muss man mindestens diese Zeitspanne Abstand vom Tageswechsel halten.
dedlfix.
Zu beachten ist dabei, dass du eventuell nicht das Datum von 7 (oder 6?) Tagen später erhältst, wenn die Umstellung auf Sommer- oder Normalzeit in den Zeitrahmen fällt. Da müsstest du die Uhrzeit auf einen sicheren Wert setzen, z.B. 0:00 Uhr.
0:00 Uhr ist aber gerade der nicht sichere Wert (den alle nehmen und damit auf die Nase fallen). Bei einer Zeitverschiebung von ±1 Stunde muss man mindestens diese Zeitspanne Abstand vom Tageswechsel halten.
Da Zeitumstellungen zumindest hierzulande um 2 Uhr stattfinden und im Allgemeinen sicherlich immer irgendwann nachts (Schaltsekunden werden IIRC um Mitternacht eingefügt), hinterlässt der ganze Bereich bei mir ein unangenehmes Gefühl. Ruhig schlafen kann ich um 12 Uhr mittags.
Tach!
Bei einer Zeitverschiebung von ±1 Stunde muss man mindestens diese Zeitspanne Abstand vom Tageswechsel halten.
Da Zeitumstellungen zumindest hierzulande um 2 Uhr stattfinden und im Allgemeinen sicherlich immer irgendwann nachts (Schaltsekunden werden IIRC um Mitternacht eingefügt), hinterlässt der ganze Bereich bei mir ein unangenehmes Gefühl. Ruhig schlafen kann ich um 12 Uhr mittags.
Es kommt nicht darauf an, wann die Umstellung stattfindet. Man kann das auch ganz ohne Gefühl rein mathematisch klären. Tage haben 23, 24 oder 25 Stunden. Eine Stunde mehr oder weniger sind zwei Stunden, die rund um den Tageswechselzeitpunkt freigehalten werden müssen. Man darf nur nicht exakt diese plus/minus eine Stunde freihalten, sondern mindestens eine Sekunde mehr, weil man sonst in einigen Situationen auf 0 Uhr kommt, und das ist ja immer schon der nächste Tag.
Schaltsekunden werden von den üblichen Systemen gar nicht berücksichtigt.
Übrigens, der Zeitpunkt, an dem die Zeitumstellung stattfindet, muss sich auch an diese Regeln halten, damit das Ergebnis im Tag bleibt und nicht auch noch das Datum wechselt.
dedlfix.
@@dedlfix
0:00 Uhr ist aber gerade der nicht sichere Wert
Grmpf.
LLAP 🖖
Und dann möchte ich das Datum in 7 Tagen haben. SelfHTML schreibt:
Ich addiere also die Millisekunden für 6 Tage hinzu
Warum 6, wenn du das Datum in 7 Tagen haben möchtest?
Ich möchte eine Woche (= 7 Tage) incl. heute haben.
Moin,
Zu beachten ist dabei, dass du eventuell nicht das Datum von 7 (oder 6?) Tagen später erhältst, wenn die Umstellung auf Sommer- oder Normalzeit in den Zeitrahmen fällt. Da müsstest du die Uhrzeit auf einen sicheren Wert setzen, z.B. 0:00 Uhr.
Zu beachten ist, dass für Zeitberechnungen mit JavaScript stets die lokalen Einstellungen am PC des Benutzers gelten.
Schönen Sonntag.
@@pl
Zu beachten ist, dass für Zeitberechnungen mit JavaScript stets die lokalen Einstellungen am PC des Benutzers gelten.
Die lokal eingestellte Uhrzeit[1], ja. Oder was meinst du?
LLAP 🖖
die sich von der richtigen Uhrzeit durchaus unterscheiden kann, insbesondere, wenn sie nicht automatisch mit der genauen synchronisiert wird ↩︎
@@pl
Zu beachten ist, dass für Zeitberechnungen mit JavaScript stets die lokalen Einstellungen am PC des Benutzers gelten.
Die lokal eingestellte Uhrzeit[^1], ja. Oder was meinst du?
Nicht nur die Uhrzeit.
MfG
@@pl
Zu beachten ist, dass für Zeitberechnungen mit JavaScript stets die lokalen Einstellungen am PC des Benutzers gelten.
Die lokal eingestellte Uhrzeit[^1], ja. Oder was meinst du?
Nicht nur die Uhrzeit.
Das Datum natürlich auch. War für mich bei Uhrzeit (im Sinne von: Zeitpunkt) mit drin. Sonst noch was?
LLAP 🖖
@@pl
Zu beachten ist, dass für Zeitberechnungen mit JavaScript stets die lokalen Einstellungen am PC des Benutzers gelten.
Die lokal eingestellte Uhrzeit[^1], ja. Oder was meinst du?
Nicht nur die Uhrzeit.
Das Datum natürlich auch. War für mich bei Uhrzeit (im Sinne von: Zeitpunkt) mit drin. Sonst noch was?
Die Zeitzone. Und ob eine automatische Umstellung bei Sommerzeit erfolgt oder nicht, ist ebenfalls eine lokale Einstellung.
MfG
@@pl
Zu beachten ist, dass für Zeitberechnungen mit JavaScript stets die lokalen Einstellungen am PC des Benutzers gelten.
Die lokal eingestellte Uhrzeit[^1], ja. Oder was meinst du?
Nicht nur die Uhrzeit.
Das Datum natürlich auch. War für mich bei Uhrzeit (im Sinne von: Zeitpunkt) mit drin. Sonst noch was?
Die Zeitzone. Und ob eine automatische Umstellung bei Sommerzeit erfolgt oder nicht, ist ebenfalls eine lokale Einstellung.
var now = new Date;
console.log(now.toISOString()); // "2017-01-29T08:49:03.791Z"
Wie genau spielt die lokale Einstellung der Zeitzone da mit rein?
var now = new Date;
console.log(now.getUTCHours()); // 8
Wie genau spielt die lokale Einstellung der Zeitzone da mit rein?
LLAP 🖖
Hallo Gunnar Bittersmann,
Zu beachten ist, dass für Zeitberechnungen mit JavaScript stets die lokalen Einstellungen am PC des Benutzers gelten. (pl)
Die lokal eingestellte Uhrzeit[^1], ja. Oder was meinst du? (Gunnar)
Wie genau spielt die lokale Einstellung der Zeitzone da mit rein?
Die Zeitzone ist Bestandteil der lokal eingestellten Uhrzeit.
Bis demnächst
Matthias
@@Matthias Apsel
Zu beachten ist, dass für Zeitberechnungen mit JavaScript stets die lokalen Einstellungen am PC des Benutzers gelten. (pl)
Die lokal eingestellte Uhrzeit[^1], ja. Oder was meinst du? (Gunnar)
Wie genau spielt die lokale Einstellung der Zeitzone da mit rein?
Die Zeitzone ist Bestandteil der lokal eingestellten Uhrzeit.
OK. Wenn man seine Uhrzeit aber mit einem Zeitserver synchronisiert, ist die Einstellung der Zeitzone für die auf UTC basierenden Methoden schnuppe.
LLAP 🖖
Moin,
Wie geht's? Das ist doch in PHP sooo einfach ...
In JS ist es auch kein Problem mit fortlaufenden Tagen zu rechnen. Vor einiger Zeit hab ich mal eine JS-Klasse entwickelt nach den Formeln von Scaliger.
Wenn Du Interesse hast, melde Dich einfach.