Ich muss einen Datumswert in JavaScript um einen Tag erhöhen.
Zum Beispiel habe ich einen Datumswert 2010-09-11 und muss das Datum des nächsten Tages in einer JavaScript-Variablen speichern.
Wie kann ich ein Datum um einen Tag erhöhen?
javascript
date
datetime
Santanu
quelle
quelle
Antworten:
Drei Optionen für Sie:
1. Verwenden Sie nur das JavaScript-
Date
Objekt (keine Bibliotheken):Meine vorherige Antwort für Nummer 1 war falsch (sie fügte 24 Stunden hinzu und berücksichtigte keine Übergänge zur und von der Sommerzeit; Clever Human wies darauf hin, dass sie mit dem 7. November 2010 in der östlichen Zeitzone fehlschlagen würde). Stattdessen ist Jigars Antwort der richtige Weg, dies ohne Bibliothek zu tun:
Dies funktioniert sogar für den letzten Tag eines Monats (oder Jahres), da das JavaScript-Datumsobjekt beim Rollover klug ist:
Code-Snippet anzeigen
(Diese Antwort wird derzeit akzeptiert, daher kann ich sie nicht löschen. Bevor sie akzeptiert wurde, schlug ich dem OP vor, Jigars zu akzeptieren, aber vielleicht haben sie diese für die Punkte 2 oder 3 auf der Liste akzeptiert.)
2. Verwenden von MomentJS :
(Beachten Sie, dass
add
die Instanz, auf der Sie sie aufrufen , geändert wird, anstatt eine neue Instanz zurückzugeben. Diestoday.add(1, 'days')
würde sich änderntoday
. Deshalb beginnen wir mit einer Klonoperationvar tomorrow = ...
.)3. Verwenden von DateJS , das jedoch seit langem nicht mehr aktualisiert wurde:
quelle
Date
Konstruktor (new Date(year, month, date)
) einspeisen. siehe Abschnitt 15.9.2.1 der Spezifikation ; Wenn Sie eine Reihe von Formaten akzeptieren möchten, schauen Sie sich auf jeden Fall DateJS an .Date.parse
(was eine Anzahl von Millisekunden zurückgibt, in die Sie dann eingeben könnennew Date(ms)
). Aber Vorsicht, das kann von Browser zu Browser unterschiedlich sein. Bis vor kurzem konnten Implementierungen fast alles tun, was sie wolltenDate.parse
. Die neue Spezifikation der 5. Ausgabe hat jetzt ein Mindestformat, das akzeptiert werden muss, aber darauf würde ich noch nicht zählen.x = new Date(); x2 = new Date(x.getTime() + 1000)
, wobei 1000 ein Millisekunden-Inkrement ist.Date
Objekte sind veränderlich. Sie speichern dasselbeDate
Objekt dreimal im Array. Wenn Sie drei verschiedeneDate
Objekte möchten , müssen Sie drei Objekte erstellen:var unavailableDates = []; for (var d = new Date('2017-05-11'); d < new Date('2017-05-13'); d.setDate(d.getDate() + 1)) { unavailableDates.push(new Date(+d)); }
quelle
new Date("2009-09-11")
, Firefox jedoch nicht. Ich denke, die meisten Browser akzeptierennew Date("2009/09/11")
so eine einfache Lösungvar arrivalDate = document.getElementById('arival_date').value; var dayAfter = new Date(arrival_date.replace(/-/g, '/')); dayAfter.setDate(dayAfter.getDate()+1);
.-
durch/
und das Hoffen, dass Browser dies akzeptieren, besteht darin, die Zeichenfolge in Teile zu unterteilen:var dateParts = arrivalDate.split('-'); var y = parseInt(dateParts[0], 10); var m = parseInt(dateParts[1], 10); var d = parseInt(dateParts[2], 10); var dayAfter = new Date(y, m-1, d+1);
Beachten Sie, dass wirm-1
hier verwenden, da Javascript-Monate Enum-Werte sind (Januar 0, nicht 1) undd+1
weil wir Ich mache die Inkrementierung bereits in der anfänglichen Zuweisung (sie wird automatisch für den 29. Februar usw. korrigiert)Keines der Beispiele in dieser Antwort scheint mit Tagen zur Anpassung der Sommerzeit zu funktionieren. An diesen Tagen beträgt die Anzahl der Stunden an einem Tag nicht 24 (23 oder 25, je nachdem, ob Sie "vorwärts springen" oder "zurückfallen").
Die folgende Javascript-Funktion von AddDays berücksichtigt die Sommerzeit:
Hier sind die Tests, mit denen ich die Funktion getestet habe:
quelle
Am einfachsten ist es, in Millisekunden zu konvertieren und 1000 * 60 * 60 * 24 Millisekunden hinzuzufügen, z.
quelle
1000*60*60*24
xDaysToBeAdded
new Date(+new Date() + 1000*60*60*24)
aber es ist tatsächlich ähnlich wiegetTime()
/setTime()
, wirklich.new Date(Date.now()+1000*60*60*24);
Morgen in einer Zeile in reinem JS, aber es ist hässlich !
Hier ist das Ergebnis:
quelle
Sie müssen zuerst Ihre Zeichenfolge analysieren, bevor Sie dem Vorschlag der anderen Personen folgen können:
Wenn Sie es wieder im gleichen Format haben möchten, müssen Sie dies "manuell" tun:
Aber ich schlage vor, Date.js zu bekommen, wie in anderen Antworten erwähnt, das wird Ihnen sehr helfen .
quelle
Ich bin der Meinung, dass nichts sicherer ist als
.getTime()
und.setTime()
, daher sollte dies das Beste und auch das Performanteste sein..setDate()
Ein ungültiges Datum (wie 31 + 1) ist zu gefährlich und hängt von der Browser-Implementierung ab.quelle
Die nächsten 5 Tage bekommen:
quelle
Zwei Methoden:
1:
2: Ähnlich wie bei der vorherigen Methode
quelle
Holen Sie sich den String - Wert des Datums mit dem dateObj.toJSON () -Methode Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON Scheibe das Datum aus dem zurück Wert und erhöhen Sie dann um die Anzahl der gewünschten Tage.
quelle
Beispiel
Ergebnis
quelle
Nicht ganz sicher, ob es sich um einen BUG handelt (Tested Firefox 32.0.3 und Chrome 38.0.2125.101), aber der folgende Code schlägt in Brasilien fehl (-3 GMT):
Ergebnis:
Wenn Sie dem Datum eine Stunde hinzufügen, funktioniert es einwandfrei (löst das Problem jedoch nicht).
Ergebnis:
quelle
Ergibt eine Zeichenfolgendarstellung des morgigen Datums. Verwenden Sie new Date (), um das heutige Datum abzurufen, fügen Sie mit Date.getDate () und Date.setDate () einen Tag hinzu und konvertieren Sie das Date-Objekt in eine Zeichenfolge.
quelle
Inkrementieren des Datumsjahres mit Vanille js:
Nur für den Fall, dass jemand einen anderen Wert als das Datum (Tag) erhöhen möchte
quelle
Über native JS können Sie eines Tages Folgendes hinzufügen:
Eine andere Option ist die Verwendung der
moment
Bibliothek:quelle
Datumsinkrement für Zeitzone / Sommerzeit für JavaScript-Daten:
quelle