var range = getDates(new Date(), new Date().addDays(7));
Ich möchte, dass "Bereich" eine Reihe von Datumsobjekten ist, eines für jeden Tag zwischen den beiden Daten.
Der Trick ist, dass es auch Monats- und Jahresgrenzen behandeln sollte.
javascript
node.js
date
datetime
date-range
Scott Klarenbach
quelle
quelle
startDate
und entfernenendDate
? Denn wennstartDate
die Zeit später alsstopDate
die Zeit ist, wird sie nichtstopDate
in das Ergebnis einbezogen, oder?Versuchen Sie dies, denken Sie daran, Moment js,
quelle
var dateArray = [];
Details hiervar currentDate = moment(startDate);
Wenn Sie diese Methode zweimal im selben Moment verwenden. Sie werden verwirrt sein, warum sie nur beim ersten Mal funktioniert. Dies liegt daran, dass Javascripts Objekte als Referenz übergeben, sodass die Funktion das startDate zweimal verwendet (was bereits mutiert ist). Durch das Patchen des obigen Fixes wird sichergestellt, dass Sie mit neuen und einzigartigen Moment-js-Objekten im Funktionsumfang arbeiten. Überprüfen Sie diese GeigeIch habe alle oben gesehen. Am Ende habe ich mich selbst geschrieben. Sie brauchen dafür keine Momente . Eine native for-Schleife ist ausreichend und am sinnvollsten, da eine for-Schleife vorhanden ist, um Werte in einem Bereich zu zählen.
Einzeiler:
Lange Version
Liste Daten dazwischen:
Tage von einem vergangenen Datum bis jetzt:
quelle
getDaysArray
? Nicht die Tage dazwischen.for (var arr=[], dt=new Date(start), ...)
. ;-)Ich benutze moment.js und Twix.js, sie bieten eine sehr gute Unterstützung für die Manpulation von Datum und Uhrzeit
Ich habe dies auf http://jsfiddle.net/Lkzg1bxb/ laufen.
quelle
quelle
quelle
Wenn Sie moment verwenden, können Sie das "offizielle Plugin" für Bereiche verwenden,
moment-range
und dann wird dies trivial.Beispiel für einen Momentbereichsknoten:
Beispiel für einen Momentbereichsbrowser:
Datum fns Beispiel:
Wenn Sie verwenden,
date-fns
danneachDay
ist Ihr Freund und Sie erhalten bei weitem die kürzeste und prägnanteste Antwort:quelle
Ich bin gerade auf diese Frage gestoßen. Der einfachste Weg, dies zu tun, ist die Verwendung von moment:
Sie müssen zuerst Moment und Momentbereich installieren:
quelle
Ich verwende seit einiger Zeit die @ Mohammed Safeer-Lösung und habe einige Verbesserungen vorgenommen. Die Verwendung formatierter Daten ist eine schlechte Vorgehensweise bei der Arbeit in Ihren Controllern.
moment().format()
sollte nur für Anzeigezwecke in Ansichten verwendet werden. Denken Sie auch daran, dassmoment().clone()
die Trennung von Eingabeparametern gewährleistet ist, sodass die Eingabedaten nicht geändert werden. Ich empfehle Ihnen dringend, moment.js zu verwenden, wenn Sie mit Datumsangaben arbeiten.Verwendung:
startDate
,endDate
Parameterinterval
Der Parameter ist optional und standardmäßig 'Tage'. Verwenden Sie Intervalle, die von der.add()
Methode (moment.js) unterstützt werden. Weitere Details hiertotal
Der Parameter ist nützlich, wenn Intervalle in Minuten angegeben werden. Der Standardwert ist 1.Aufrufen:
Funktion:
quelle
Mit ES6 haben Sie Array.from, was bedeutet, dass Sie eine wirklich elegante Funktion schreiben können, die dynamische Intervalle (Stunden, Tage, Monate) ermöglicht.
quelle
new Date(2017,12,30)
ist der 30. Januar 2018, für mich beginnt der Datumsbereich am 29. Januar 2018. Nicht alle Tage sind 8,64 bis 7 ms (24 Stunden) lang, an denen die Sommerzeit beobachtet wird. ;-)Ich habe kürzlich mit moment.js gearbeitet, gefolgt von dem Trick ..
Ergebnis wäre:
quelle
quelle
var
vorherstrDate
in der while-Schleife haben!d3js bietet viele praktische Funktionen und enthält d3.time für einfache Datumsmanipulationen
https://github.com/d3/d3-time
Für Ihre spezielle Anfrage:
Koordinierte Weltzeit
oder Ortszeit
Bereich ist ein Array von Datumsobjekten, die auf den ersten möglichen Wert für jeden Tag fallen
Sie können timeDay in timeHour, timeMonth usw. ändern, um dieselben Ergebnisse in unterschiedlichen Intervallen zu erzielen
quelle
Hier ist ein Einzeiler, für den keine Bibliotheken erforderlich sind, falls Sie keine weitere Funktion erstellen möchten. Ersetzen Sie einfach startDate (an zwei Stellen) und endDate (js Datumsobjekte) durch Ihre Variablen oder Datumswerte. Natürlich können Sie es in eine Funktion einwickeln, wenn Sie es vorziehen
quelle
Ich benutze diese Funktion
quelle
Ich verwende eine einfache while-Schleife, um die Zwischendaten zu berechnen
quelle
Hinweis: Ich bin mir bewusst, dass dies etwas anders ist als die angeforderte Lösung, aber ich denke, viele werden es nützlich finden.
Wenn Sie jedes "x" -Intervall (Tage, Monate, Jahre usw.) zwischen zwei Datumsangaben suchen möchten , aktivieren moment.js und die Erweiterungspakete für den Momentbereich diese Funktionalität.
So finden Sie beispielsweise jeden 30. Tag zwischen zwei Daten :
quelle
Generieren Sie eine Reihe von Jahren:
Generieren Sie ein Array für einen Monat:
Generieren Sie ein Arrays für Tage:
quelle
Dies kann jemandem helfen,
https://gist.github.com/pranid/3c78f36253cbbc6a41a859c5d718f362.js
quelle
Hier ist eine vordefinierte Methode, die Momentdaten oder Zeichenfolgen oder eine Mischung als Eingaben akzeptiert und eine Reihe von Daten als Momentdaten generiert. Wenn Sie keine Momentdaten als Ausgabe wünschen, ändern Sie die
map()
Rückgabe der Methode.quelle
@ softvars Lösung, aber dann einschließlich Arbeitsdatum Option
quelle
Funktion:
Verwendung:
Hoffe es hilft dir
quelle