var range = getDates(new Date(), new Date().addDays(7));
Eu gostaria que "intervalo" fosse uma matriz de objetos de data, um para cada dia entre as duas datas.
O truque é que ele também deve lidar com os limites de mês e ano.
javascript
node.js
date
datetime
date-range
Scott Klarenbach
fonte
fonte
startDate
eendDate
? Porque sestartDate
o tempo for posterior aostopDate
tempo, ele não será incluídostopDate
no resultado, certo?Tente isso, lembre-se de incluir o momento js,
fonte
var dateArray = [];
Detalhes aquivar currentDate = moment(startDate);
caso você esteja usando esse método duas vezes nas mesmas datas moment.js, ficará surpreso com o motivo pelo qual ele funciona apenas na primeira vez. Isso acontece porque javascripts passa objetos por referência para que a função termine usando o startDate duas vezes (que já está mutado). A correção da correção acima garante que você esteja trabalhando com novos e únicos momentos js objetos no escopo da função. Verifique este violino #Eu olhei todos acima. Acabei escrevendo a mim mesmo. Você não precisa de momentjs para isso . Um loop for nativo é suficiente e faz mais sentido porque existe um loop for para contar valores em um intervalo.
Um forro:
Versão longa
Listar datas entre:
Dias desde uma data passada até agora:
fonte
getDaysArray
? Não os dias entre isso.for (var arr=[], dt=new Date(start), ...)
. ;-)Eu uso moment.js e Twix.js, eles fornecem um ótimo suporte para manipulação de data e hora
Eu tenho isso em execução em http://jsfiddle.net/Lkzg1bxb/
fonte
fonte
fonte
Se você estiver usando o momento, poderá usar o "plugin oficial" deles para intervalos
moment-range
e isso se tornará trivial.exemplo de nó de intervalo de momento:
exemplo de navegador no intervalo do momento:
date fns exemplo:
Se você estiver usando,
date-fns
entãoeachDay
é seu amigo e você obtém de longe a resposta mais curta e concisa:fonte
Acabei de me deparar com essa pergunta, a maneira mais fácil de fazer isso é usar o momento:
Você precisa instalar o momento e o intervalo de momentos primeiro:
fonte
Estou usando a solução @Mohammed Safeer há um tempo e fiz algumas melhorias. Usar datas formatadas é uma prática ruim ao trabalhar em seus controladores.
moment().format()
deve ser usado apenas para fins de exibição em visualizações. Lembre-se também quemoment().clone()
garante a separação dos parâmetros de entrada, o que significa que as datas de entrada não são alteradas. É altamente recomendável que você use o moment.js ao trabalhar com datas.Uso:
startDate
,endDate
parâmetrosinterval
O parâmetro é opcional e o padrão é 'days'. Use intervalos suportados pelo.add()
método (moment.js). Mais detalhes aquitotal
O parâmetro é útil ao especificar intervalos em minutos. O padrão é 1.Invocar:
Função:
fonte
Usando o ES6, você tem Array.from, o que significa que você pode escrever uma função realmente elegante, que permite intervalos dinâmicos (horas, dias, meses).
fonte
new Date(2017,12,30)
é 30 de janeiro de 2018. Para mim, o período começa em 29 de janeiro de 2018. Nem todos os dias têm 8,64e7 ms (24 horas) de duração em que o horário de verão é observado. ;-)Eu estava trabalhando recentemente com moment.js, seguindo o truque ..
O resultado seria:
fonte
fonte
var
antesstrDate
dentro do loop while!O d3js fornece muitas funções úteis e inclui o d3.time para manipulações fáceis de datas
https://github.com/d3/d3-time
Para sua solicitação específica:
Utc
ou hora local
O intervalo será uma matriz de objetos de data que caem no primeiro valor possível para cada dia
você pode alterar timeDay para timeHour, timeMonth etc. para os mesmos resultados em intervalos diferentes
fonte
Aqui está um liner que não requer bibliotecas, caso você não queira criar outra função. Apenas substitua startDate (em dois lugares) e endDate (que são objetos js date) pelas suas variáveis ou valores de data. Claro que você poderia envolvê-lo em uma função, se preferir
fonte
Eu uso essa função
fonte
Estou usando o simples while loop para calcular as datas entre
fonte
Nota: Eu sei que isso é um pouco diferente da solução solicitada, mas acho que muitos a acharão útil.
Se você deseja encontrar cada intervalo "x" (dias, meses, anos, etc ...) entre duas datas, moment.js e o intervalo de momentos pacotes de extensão de ativam essa funcionalidade.
Por exemplo, para encontrar a cada 30 dias entre duas datas :
fonte
Gere uma matriz de anos:
Gere matrizes para o mês:
Gere matrizes por dias:
fonte
Você pode fazer isso facilmente usando momentJS
Adicione um momento às suas dependências
Em seguida, importe isso no seu arquivo
Em seguida, use o código a seguir para obter a lista de todas as datas entre duas datas
fonte
Isso pode ajudar alguém,
https://gist.github.com/pranid/3c78f36253cbbc6a41a859c5d718f362.js
fonte
Aqui está um método fixo que aceita datas ou seqüências de caracteres do momento ou uma mistura como entradas e gera uma matriz de datas como datas do momento. Se você não deseja datas do momento como saída, altere o que o
map()
método retorna.fonte
solução @ softvar, mas incluindo a opção de datas de trabalho
fonte
Função:
Uso:
Espero que ajude você
fonte