Minimum und maximum finden Termine
Gibt es eine ganze Reihe:
var a = new Array();
Es enthält Datum-Einträge wie diesen: "2012-09-12 09:20', etc
Muss ich minimum und maximum finden von Daten unter Verwendung von javascript. Dieser code funktioniert nicht mit der Zeit-Werte.
var minT = Math.min.apply(Math, a);
var maxT = Math.max.apply(Math, a);
Wie kann ich lösen dieses problem in javascript? Es scheint Recht Komplex zu sein, wie ich bin nicht sehr erfahren in dieser Sprache.
Hat Ihr array enthält Datum-strings, oder
mögliche Duplikate von das älteste Datum in einer Liste von Daten
Streicher, es würde gearbeitet haben, mit
Nur etwas hinzufügen - konvertieren Sie Ihre date zu unix timestamp und Sie können
Die Umwandlung in Objekte ist ein Weg, um Sie zu konvertieren von timestamps. Sie können leicht die Anzahl der Millisekunden seit 1970-01-01 00:00:00 Uhr UTC (ohne Schaltsekunden).
Date
Objekte?mögliche Duplikate von das älteste Datum in einer Liste von Daten
Streicher, es würde gearbeitet haben, mit
Date
Objekte 😉Nur etwas hinzufügen - konvertieren Sie Ihre date zu unix timestamp und Sie können
Math.min.apply
und Math.max.apply
weil der unix-timestamp ist eine ganze Zahl.Die Umwandlung in Objekte ist ein Weg, um Sie zu konvertieren von timestamps. Sie können leicht die Anzahl der Millisekunden seit 1970-01-01 00:00:00 Uhr UTC (ohne Schaltsekunden).
InformationsquelleAutor You Kuper | 2012-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihr array enthält
Date
Objekte, dann sollte das klappen. Wenn es nur strings enthält, wie'2012-09-12 09:20'
, dann können Sie Sortieren und bekommen die 1. und letzten Elemente.O(n log n)
während min&max müssenO(2n)
. Auch deine sort-Methode erstellt zweiDate
Objekte in jedem Vergleich - während einer alphanumerischen Sortierung würde das gleiche Ergebnis.Alphanumerische Sortierung funktioniert nur, wenn die pars sind in der richtigen Reihenfolge Y-M-D H:M:S, nicht für D/M/Y oder M/D/Y.
Ja, aber genau das ist das format der OP verwendet
Hmm. Warum
[new Date('2015-01-01'), new Date('2015-03-01'), new Date('2015-02-01')].sort()
Sortieren, vom größten zum kleinsten (bei Chrome zumindest), in der Erwägung, dass[new Date('2015-01-01'), new Date('2015-03-01'), new Date('2015-02-01')].sort(function(a,b) { return a-b; })
richtig sortiert in aufsteigender Reihenfolge?Ah, danke, das macht Sinn. Zu viele implizite Konvertierungen. Sorry für diesen off-topic.
InformationsquelleAutor Rocket Hazmat
Math.min
/max
nur vergleicht zahlen, keine Zeichenketten. Verwenden Sie Sie nicht zum darstellen der Daten, aber verwenden SieDate
- Objekte - Sie werden verglichen werden, indem Ihre internen timestamp-Nummer. Noch ist die max/min wird wieder die interne Nummer, so würden Sie brauchen, um es zu konvertieren zurück zu einemDate
(siehe Min/Max Daten in ein array?):Jedoch, wenn Sie wollen, verwenden Sie die Zeichenfolgen oder können nicht verwenden Sie die neu erstellte Datum, müssen Sie manuell durch die array - entweder mit einer for-Schleife, oder der ES5.1-nur die iterator-Methode
.reduce()
:Wenn Sie Ihren code nicht brauchen, um effizient zu sein, Sie auch nur zu Sortieren das array ist und die ersten und letzten Werte. Die Standard-alphanumerische Sortierung tun Sie es für Ihr date-format, also das ist wirklich einfach:
InformationsquelleAutor Bergi
Versuchen Sie dies:
Fand ich es auf einer früheren Frage
InformationsquelleAutor Luigi Siri
Dies sollte es tun:
Wenn Sie arbeiten müssen, mit den Saiten könnte man eine Funktion definieren:
Dann:
HAFTUNGSAUSSCHLUSS: Diese zweite Methode funktioniert nur, wenn alle die Datum-strings sind im selben format, wenn Sie verschiedene format Daten im array werden Sie nicht in der Lage sein, um diese Funktion zu nutzen.
Date
Objekte. Es enthält strings hier.du hast Recht, bearbeitet meine Antwort richtig zu beantworten die Frage
InformationsquelleAutor mornaner
Ist das array gefüllt mit Date-Objekten?
Wenn ja, vergleichen Sie mit Ihnen, und Sortieren Sie Sie mithilfe einer der vielen bekannten algorithmen.
Wenn nicht, erstellen Sie das array mit den Date-Objekte, eins für jeden von Ihnen, und Tue, wie ich oben sagte, durch die Anordnung der array.
InformationsquelleAutor seth