Esta é uma pergunta feita por um amigo no grupo. Naquela época, eu disse que poderia apenas julgar se o dia era adjacente. Mais tarde, pensei com cuidado e descobri que estava completamente errado.
Requisitos de problema
Dadas 5 datas do mesmo formato, como você determina se são 5 dias consecutivos?
Minha primeira reação foi a GetDay () e classificá -la, e depois compará -la antes e depois. .
Mas se você pensar com cuidado, está completamente errado. Por exemplo, isso também será julgamento errôneo.
E não é apenas um problema, mas também atravessando o mês, a véspera de Ano Novo, o mês bisseiro e outros problemas.
Depois, há o seguinte código.
Deixe o timestamp suavizar tudo
Para não se preocupar com essas questões, pensei em registros de data e hora, e esse cara pode ignorar completamente os problemas acima. Basta processar o registro de data e hora e compará -los no final.
Então eu dei o seguinte código:
Let Days = ['2016-02-28', '2016-02-29', // Mês salgado '2016-03-01 ', // Cross Month'2016-03-02', '2016-03-03',] // Classificar primeiro, depois o TIMTAMP LET _DAYS = D (). dt.setDate (dt.getDate () + 4 - i) // processado como a mesma data retorna + dt}) // compare se os registros de data e hora são os mesmos console.log (_Days [0] == _Days [1] && _days [0] == _DAIs [2] _Days [4])
OK, todos os problemas foram resolvidos e não importa se você atravessa o ano novo, atravessa o mês ou o mês bissexto.
Encapsulamento da função geral
O código acima ainda é um pouco defeituoso, porque o tempo, o minuto e o segundo não são processados e, se houver momentos, minuto e segundo, você também deve apagá -lo primeiro.
Let Days = ['2016-02-28 12:00:00', '2016-02-29 12:00:01'; 12:00:04',]console.log(continueDays(days))function continueDays(arr_days) { // Sort first, then turn the timestamp let days = arr_days.sort().map((d, i) => { let dt = new Date(d) dt.setDate(dt.getDate() + 4 - i) // Processed as the same date // Erased hours, minutes, seconds, MillisEconds, dt.SetMinutes (0) dt.setseconds (0) dt.setMillisEconds (0) retornar +dt}) Deixe ret = True Days.ForEach (d => {if (dias [0]! == d) {ret = false}) retornar ret}Essa função é alterada apenas em 2 lugares, apagando o tempo, minuto, segundo, milissegundos e comparação de loop, e os outros são os mesmos.
resumo
O tempo de processamento do JS ainda é muito simples. Por exemplo, escrever um plug-in de data é realmente muito fácil de implementar com a ajuda da data, mas você precisa entender a API da data.
Claro, dizer que é simples, ou o PHP é o mais simples, isso é simplesmente incrível.
O exemplo simples acima de julgar se um conjunto de datas é contínuo é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.