Dies ist eine Frage, die ein Freund in der Gruppe gestellt hat. Zu dieser Zeit sagte ich, ich könne nur beurteilen, ob der Tag nebeneinander war. Später dachte ich sorgfältig darüber nach und stellte fest, dass es völlig falsch war.
Problemanforderungen
Wie bestimmen Sie bei 5 Daten desselben Formats, ob es 5 aufeinanderfolgende Tage sind?
Meine erste Reaktion war, Day () zu bekommen und es zu sortieren und es dann vor und nachher zu vergleichen. .
Aber wenn Sie sorgfältig darüber nachdenken, ist es völlig falsch. Dies ist beispielsweise auch Fehleinschätzung.
Und es ist nicht nur ein solches Problem, sondern auch den Monat, den Silvester, den Sprungmonat und andere Probleme.
Dann gibt es den folgenden Code.
Lassen Sie den Zeitstempel alles glätten
Um sich keine Sorgen um diese Probleme zu machen, dachte ich an Zeitstempel, und dieser Typ kann die oben genannten Probleme vollständig ignorieren. Verarbeiten Sie einfach den Zeitstempel und vergleichen Sie sie am Ende.
Dann gab ich den folgenden Code:
Lassen Sie Days = ['2016-02-28', '2016-02-29', // Leap Month'2016-03-01 ', // Cross Month'2016-02', '2016-03-03',] // Sortieren zuerst, dann drehen dt.setDate (dt.getDate () + 4 - i) // verarbeitet als das gleiche Datum return + dt}) // Vergleichen Sie, ob die Zeitstempel dieselbe Konsole sind. _days [4])
Ok, alle Probleme wurden gelöst, und es spielt keine Rolle, ob Sie das neue Jahr überqueren, den Monat oder einen Sprungmonat überqueren.
Allgemeine Funktionskapselung
Der obige Code ist immer noch etwas fehlerhaft, da die Zeit, die Minute und die zweite nicht verarbeitet werden, und wenn es Zeiten, Minute und zweiten gibt, müssen Sie ihn zuerst löschen.
Lassen Sie Days = ['2016-02-28 12:00:00', '2016-02-29 12:00:01', // Leap Month'2016-03-01 12:00:02 ', // Cross-Month'2016-02-02 12:00:03', 2016-03-03 12:00:04 ',' 2016-04-04-04-04-04-04-04-04-04-04-04-04-04-04-04-04-04: 12:00:04 ',] console.log (Contestays (Tage)) Funktion Contestays (arr_days) {// Sortieren Sie zuerst den Zeitstempel lassen Sie Tage = arr_days.sort (). MAP ((d, i) => {let dt = new Date (d) dt.setdate (dt.getdate () () + 4 - i). Milliseconds, dt.setMinutes (0) dt.setseconds (0) dt.setMilliseconds (0) return +dt}) Sei Ret = True Days.foreach (d => {if (tage [0]!Diese Funktion wird nur an zwei Stellen verändert, die Zeit, Minute, Sekunde, Millisekunden- und Schleifenvergleich und die anderen sind gleich.
Zusammenfassung
Die Verarbeitungszeit von JS ist immer noch sehr einfach. Zum Beispiel ist das Schreiben eines Datums-Plug-Ins mit Hilfe des Datums tatsächlich sehr einfach zu implementieren, aber Sie müssen die Datums-API verstehen.
Natürlich zu sagen, dass es einfach ist oder PHP am einfachsten ist, das ist einfach erstaunlich.
Das obige einfache Beispiel dafür, ob eine Reihe von Daten kontinuierlich ist, ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.