So fügen Sie Date
mit JavaScript Tage zum aktuellen hinzu . Hat JavaScript eine eingebaute Funktion wie die von .Net AddDay
?
javascript
date
datetime
time
Ashesh
quelle
quelle
Date.prototype.addDays=function(d){return new Date(this.valueOf()+864E5*d);};
864E5
Aus irgendeinem Grund schreibe ich lieber24*60*60
in meinen Code :)Richtige Antwort :
Falsche Antwort :
Diese Antwort liefert manchmal das richtige Ergebnis, gibt aber sehr oft das falsche Jahr und den falschen Monat zurück. Diese Antwort funktioniert nur dann, wenn das Datum, zu dem Sie Tage hinzufügen, zufällig das aktuelle Jahr und den aktuellen Monat enthält.
Beweis / Beispiel
Überprüfen Sie diese JsFiddle
Code-Snippet anzeigen
quelle
Seien Sie vorsichtig, da dies schwierig sein kann. Wenn Sie "morgen" einstellen, funktioniert dies nur, weil der aktuelle Wert mit dem Jahr und dem Monat für "heute" übereinstimmt. Die Einstellung auf eine Datumsnummer wie "32" funktioniert jedoch normalerweise immer noch einwandfrei, um sie auf den nächsten Monat zu verschieben.
quelle
var d = new Date(); d.setDate( d.getDate() + 1 );
?getDate()
der Tag des Jahres zurückgegeben . Wenn Sie dann anrufensetDate
, wird der Tag im aktuellen Jahr festgelegt . Es ist also KEINE gute allgemeine Lösung. Die Antwort von @ AnthonyWJones funktioniert tatsächlich korrekt.var d = new Date(2015,11,30);d.setDate(d.getDate() + 370)
gibt 3 Jan 2017, die 2 Jahre überschreitet.Meine einfache Lösung ist:
Diese Lösung hat kein Problem mit der Sommerzeit. Man kann auch jeden Offset für Jahre, Monate, Tage usw. hinzufügen / unterschreiben.
ist der richtige Code.
quelle
setDate
.Diese Antworten erscheinen mir verwirrend, ich bevorzuge:
getTime () gibt uns Millisekunden seit 1970 an, und 86400000 ist die Anzahl der Millisekunden pro Tag. Daher enthält ms Millisekunden für das gewünschte Datum.
Die Verwendung des Millisekundenkonstruktors ergibt das gewünschte Datumsobjekt.
quelle
new Date(new Date('11/4/2012').getTime() + 86400000)
Versuchen
Wenn Sie setDate () zum Hinzufügen eines Datums verwenden, wird Ihr Problem nicht gelöst. Versuchen Sie, einem Februar-Monat einige Tage hinzuzufügen. Wenn Sie versuchen, neue Tage hinzuzufügen, führt dies nicht zu den erwarteten Ergebnissen.
quelle
setDate()
? Ist es das: stackoverflow.com/questions/5497637/…Ich habe nur ewig versucht, herauszufinden, was der Deal mit dem Jahr war, das nicht hinzugefügt wurde, wenn ich den folgenden Beispielen folge.
Wenn Sie dem Datum, das Sie haben, einfach n Tage hinzufügen möchten, gehen Sie am besten einfach:
oder die langatmige Version
Das heute / morgen Zeug ist verwirrend. Indem Sie das aktuelle Datum in Ihre neue Datumsvariable einstellen, wird der Jahreswert durcheinander gebracht. Wenn Sie ab dem ursprünglichen Datum arbeiten, werden Sie nicht.
quelle
Wenn Sie können, verwenden Sie moment.js . JavaScript verfügt nicht über sehr gute native Datums- / Zeitmethoden. Das Folgende ist ein Beispiel für die Syntax von Moment:
Referenz: http://momentjs.com/docs/#/manipulating/add/
quelle
CodePen
quelle
Ich habe diese Erweiterungen letzte Nacht erstellt:
Sie können entweder positive oder negative Werte übergeben.
Beispiel:
quelle
Ohne die zweite Variable zu verwenden, können Sie 7 durch Ihre nächsten x Tage ersetzen:
quelle
zu subtrahieren 30 Tagen verbrauchen (24h = 86400000ms)
Code-Snippet anzeigen
quelle
Die einfachste Lösung.
quelle
Vielen Dank an Jason für Ihre Antwort, die wie erwartet funktioniert. Hier ist eine Mischung aus Ihrem Code und dem praktischen Format von AnthonyWJones:
quelle
Spät zur Party,
aber wenn Sie verwendenist es ein ausgezeichnetes Plugin namens Moment:jQuery
dannhttp://momentjs.com/
http://momentjs.com/docs/#/manipulating/
Und viele andere gute Sachen drin!
Bearbeiten: jQuery-Referenz dank Aikerus Kommentar entfernt
quelle
Eine Lösung für den Pipeline-Betreiber :
Verwendungszweck:
Wenn Sie mehr Funktionen benötigen, empfehle ich Ihnen, in die date-fns- Bibliothek zu schauen .
quelle
Alt weiß ich, aber manchmal mag ich das:
quelle
Date.prototype.addDays = function(days) {return new Date(this.getTime() + (864e5 * days));};
Ich hatte Probleme mit der Sommerzeit mit der vorgeschlagenen Lösung.
Mit
getUTCDate
/setUTCDate
stattdessen habe ich mein Problem gelöst.quelle
Sie können JavaScript verwenden, keine jQuery erforderlich:
quelle
Generischer Prototyp ohne Variablen, gilt für einen vorhandenen Datumswert:
quelle
Die Mozilla-Dokumente für setDate () geben nicht an, dass sie Szenarien zum Monatsende verarbeiten. Siehe https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date
Datum einstellen()
Deshalb verwende ich setTime (), wenn ich Tage hinzufügen muss.
quelle
So einfach ist das:
quelle
Ich denke, ich werde auch eine Antwort geben:
Ich persönlich versuche gerne, unbegründete Variablendeklarationen, Methodenaufrufe und Konstruktoraufrufe zu vermeiden, da sie alle teuer für die Leistung sind. (im Rahmen der Vernunft natürlich)
Ich wollte dies als Kommentar unter der Antwort von @AnthonyWJones belassen, dachte aber besser darüber nach.
Das oben Gesagte respektiert die Sommerzeit. Wenn Sie also eine Anzahl von Tagen hinzufügen, die die Sommerzeit überschreiten, ändert sich die angezeigte Zeit (Stunde) entsprechend.
Beispiel:
2. November 2014 02:00 war das Ende der Sommerzeit.
Wenn Sie die Zeit während der Sommerzeit beibehalten möchten (10:30 ist also immer noch 10:30) ...
Also, jetzt hast du ...
quelle
Nein, Javascript hat keine eingebaute Funktion, aber Sie können eine einfache Codezeile verwenden
quelle
Ich benutze so etwas wie:
Funktioniert mit Tagessparzeit:
Arbeitet mit Neujahr:
Es kann parametrisiert werden:
quelle
Ich verwende die folgende Lösung.
Date hat einen Konstruktor, der ein int akzeptiert. Dieses Argument repräsentiert die Gesamtzahl der Millisekunden vor / nach dem 1. Januar 1970. Es verfügt auch über eine Methode setTime, die dasselbe tut, ohne ein neues Date-Objekt zu erstellen.
Wir konvertieren hier Tage in Millisekunden und addieren diesen Wert zu dem von getTime bereitgestellten Wert. Schließlich geben wir das Ergebnis an den Konstruktor Date (Millisekunden) oder an die Methode setTime (Millisekunden) weiter.
quelle
now.setDate(now.getDate() + days);
behandelt automatisch DST-Änderungen. Und ich muss korrigieren, Schaltsekunden werden in JS-Zeitstempeln ignoriert.Bearbeiten: Anstelle von
setTime()
(odersetHours()
) können Sie dies folgendermaßen tun:Alt:
Anstatt zu verwenden
setTime()
, können Sie verwendensetHours()
:Siehe die JSFiddle ...
quelle
d.setDate(d.getDate() + 1);
Sehr einfacher Code zum Hinzufügen von Datumstagen in Java-Skript.
quelle
Es gibt eine setDate- und eine getDate- Methode, mit denen Sie Folgendes tun können:
Wenn Sie sowohl eine Anzahl von Tagen subtrahieren als auch Ihr Datum in einem für Menschen lesbaren Format formatieren möchten, sollten Sie ein benutzerdefiniertes
DateHelper
Objekt erstellen , das ungefähr so aussieht:(siehe auch diese Geige )
quelle
Das Erweitern des Prototyps in Javascript ist möglicherweise keine gute Idee , insbesondere in professionellen Codebasen.
Was Sie tun möchten, ist die native
Date
Klasse zu erweitern:Auf diese Weise werden
addDays
Sie nichts kaputt machen , wenn Javascript eines Tages eine native Methode implementiert .quelle