Это вопрос, заданный другом в группе. В то время я сказал, что могу просто судить, был ли день прилегающим. Позже я осторожно подумал и обнаружил, что это было совершенно неправильно.
Проблемные требования
Учитывая 5 дат того же формата, как вы определяете, является ли это 5 дней подряд?
Моей первой реакцией было получить день () и сортировать его, а затем сравнить его до и после. Полем
Но если вы думаете об этом внимательно, это совершенно неправильно. Например, это также будет ошибочным.
И это не просто такая проблема, но и пересечение месяца, канун Нового года, мирового месяца и других вопросов.
Тогда есть следующий код.
Пусть временная метка все сглаживает
Чтобы не беспокоиться об этих проблемах, я подумал о временных метках, и этот парень может полностью игнорировать вышеуказанные проблемы. Просто обработайте временную метку и сравните их в конце.
Затем я дал следующий код:
let Days = ['2016-02-28', '2016-02-29', // Leap Month'2016-03-01 ', // Cross Month'2016-03-02', '2016-03-03',] // Сортировка сначала, затем поверните временной метки _days = days.sort (). dt.setDate (dt.getDate () + 4 - i) // обрабатывается как одна и та же дата возврат + dt}) // Сравнение, являются ли временные метки одинаковыми консолями. _Days [4])
ОК, все проблемы были решены, и не имеет значения, если вы пересекаете Новый год, пересекаете месяц или на перейти.
Общая функция инкапсуляция
Приведенный выше код все еще немного ошибочен, потому что время, минута и второе не обрабатываются, и если есть время, минуты и второе, вы также должны стереть его в первую очередь.
let Days = ['2016-02-28 12:00:00', '2016-02-29 12:00:01', // Leap Month'2016-03-01 12:00:02 ', // Crossmonth'2016-03-02 12:00:03', '2016-03-03 12:00:04', 2016-03-04-04 12:00:04 ',] console.log (продолжение (дни)) Функция Продолжение (arr_days) {// Сначала сортируйте, затем поверните временной метки let Days = arr_days.sort (). Map ((d, i) => {Let dt = Новая дата (d) dt.setdate (dt.getdate () + 4 -ale) ///mansed, как и той же даты / sesedate, sene, sene, seshyds, sene, sene, seshysdate (). Milliseconds, dt.setminutes (0) dt.setseconds (0) dt.setmilliseconds (0) return +dt}) let ret = true days.foreach (d => {if (0]! == d) {ret = false}) return ret}Эта функция только что изменена в 2 местах, стирая время, минуту, второе, Millisecond и сравнение цикла, а другие одинаковы.
краткое содержание
Время обработки JS все еще очень просто. Например, написание плагина даты на самом деле очень легко реализовать с помощью даты, но вам необходимо понять API даты.
Конечно, сказать, что это просто, или PHP - самый простой, это просто удивительно.
Приведенный выше простой пример оценки того, непрерывно ли набор дат - это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.