Dados dois Date()
objetos, onde um é menor que o outro, como faço um loop todos os dias entre as datas?
for(loopDate = startDate; loopDate < endDate; loopDate += 1)
{
}
Esse tipo de loop funcionaria? Mas como posso adicionar um dia ao contador de loops?
Obrigado!
javascript
date
loops
Tom Gullen
fonte
fonte
Date.now()
ao definirnow
?new Date()
retorna a data atual como um objeto por padrão . ChamarDate
sem onew
construtor apenas fornece uma string de Data que você converte em um objeto Date de qualquer maneira?new Date(2012, 0, 1);
estava pegando o dia incorreto (um dia antes),new Date(Date.UTC(2012, 0, 1))
funcionou bem.Baseado na resposta de Tom Gullen.
fonte
Date
é um objeto global developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/… #Se startDate e endDate forem realmente objetos de data, você poderá convertê-los em número de milissegundos desde meia-noite de 1º de janeiro de 1970, assim:
Em seguida, você pode fazer um loop de um para outro, incrementando o loopTime em 86400000 (1000 * 60 * 60 * 24) - número de milissegundos em um dia:
fonte
86400000
segundos em um dia. Esse loop é frágil para alterações no horário de verão e outras condições de borda.Acho que encontrei uma resposta ainda mais simples, se você se permitir usar o Moment.js :
fonte
Aqui código de trabalho simples, funcionou para mim
fonte
fonte
Com base na resposta de Tabare, tive que adicionar mais um dia no final, pois o ciclo é cortado antes
fonte
Se você deseja uma maneira eficiente com milissegundos:
fonte
Vamos supor que você obteve a data de início e a data de término da interface do usuário e a armazenou na variável de escopo no controlador.
Em seguida, declare uma matriz que será redefinida em todas as chamadas de função, para que na próxima chamada da função os novos dados possam ser armazenados.
var dayLabel = [];
Lembre-se de usar a nova data (sua variável inicial) porque se você não usar a nova data e atribuí-la diretamente à variável, a função setDate alterará o valor da variável original em cada iteração`
fonte
Com base na resposta de Jayarjo:
fonte