Como adicionar dias aos atuais Date
usando JavaScript. O JavaScript possui uma função incorporada como a .Net AddDay
?
javascript
date
datetime
time
Ashesh
fonte
fonte
Date.prototype.addDays=function(d){return new Date(this.valueOf()+864E5*d);};
864E5
por algum motivo eu prefiro escrever24*60*60
no meu código :)Resposta correta :
Resposta incorreta :
Essa resposta às vezes fornece o resultado correto, mas muitas vezes retorna o ano e o mês incorretos. A única vez que essa resposta funciona é quando a data em que você está adicionando os dias tem o ano e o mês atuais.
Prova / Exemplo
Verifique este JsFiddle
Mostrar snippet de código
fonte
Tenha cuidado, porque isso pode ser complicado. Ao definir "amanhã", funciona apenas porque o valor atual corresponde ao ano e mês para "hoje". No entanto, definir um número de data como "32" normalmente ainda funcionará bem para movê-lo para o próximo mês.
fonte
var d = new Date(); d.setDate( d.getDate() + 1 );
:?getDate()
retornará o dia desse ano . Em seguida, a chamadasetDate
define o dia no ano atual . Por isso, é não uma solução geral bom. A resposta de @ AnthonyWJones realmente funciona corretamente.var d = new Date(2015,11,30);d.setDate(d.getDate() + 370)
dá 3 de janeiro de 2017, que cruza 2 anos.Minha solução simples é:
Esta solução não tem problemas com o horário de verão. Além disso, pode-se adicionar / subtrair qualquer deslocamento por anos, meses, dias etc.
é o código correto.
fonte
setDate
.Essas respostas me parecem confusas, eu prefiro:
getTime () fornece milissegundos desde 1970 e 86400000 é o número de milissegundos em um dia. Portanto, ms contém milissegundos para a data desejada.
O uso do construtor de milissegundos fornece o objeto de data desejado.
fonte
new Date(new Date('11/4/2012').getTime() + 86400000)
Tentar
O uso de setDate () para adicionar uma data não resolverá seu problema. Tente adicionar alguns dias a um mês de fevereiro. Se você tentar adicionar novos dias, isso não resultará no que você esperava.
fonte
setDate()
? É isso: stackoverflow.com/questions/5497637/…Passei anos tentando descobrir qual era o acordo que o ano não adicionava ao seguir os exemplos de liderança abaixo.
Se você quiser simplesmente adicionar n dias à data em que você tem, é melhor apenas ir:
ou a versão de vento longo
Esse material de hoje / amanhã é confuso. Ao definir a data atual em sua nova variável de data, você alterará o valor do ano. se você trabalha a partir da data original, não o fará.
fonte
Se você puder, use moment.js . O JavaScript não possui métodos de data / hora nativos muito bons. A seguir, é apresentado um exemplo da sintaxe do momento:
Referência: http://momentjs.com/docs/#/manipulating/add/
fonte
CodePen
fonte
Eu criei essas extensões na noite passada:
você pode passar valores positivos ou negativos;
exemplo:
fonte
Sem usar a segunda variável, você pode substituir 7 pelos seus próximos x dias:
fonte
para subtrair 30 dias de uso (24h = 86400000ms)
Mostrar snippet de código
fonte
A solução mais simples.
fonte
Obrigado Jason pela resposta que funciona conforme o esperado, eis uma mistura do seu código e do prático formato de AnthonyWJones:
fonte
Tarde para a festa,
mas se você usarexiste um excelente plugin chamado Moment:jQuery
,http://momentjs.com/
http://momentjs.com/docs/#/manipulating/
E muitas outras coisas boas lá!
Edit: Referência do jQuery removida graças ao comentário de aikeru
fonte
Uma solução projetada para o operador de tubulação :
Uso:
Se você precisar de mais funcionalidades, sugiro consultar a biblioteca date-fns .
fonte
Velho eu sei, mas às vezes gosto disso:
fonte
Date.prototype.addDays = function(days) {return new Date(this.getTime() + (864e5 * days));};
Eu tive problemas com o horário de verão com a solução proposta.
Usando
getUTCDate
/ emsetUTCDate
vez disso, resolvi meu problema.fonte
Você pode usar JavaScript, não é necessário jQuery:
fonte
Protótipo genérico sem variáveis, aplica-se a um valor de Data existente:
fonte
Os documentos do mozilla para setDate () não indicam que ele manipulará cenários de final de mês. Consulte https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date
setDate ()
É por isso que uso setTime () quando preciso adicionar dias.
fonte
Tão simples como isto:
fonte
Acho que vou dar uma resposta também:
Pessoalmente, gosto de tentar evitar declarações variáveis gratuitas, chamadas de método e chamadas de construtor, pois elas são caras no desempenho. (dentro da razão, é claro),
eu deixaria isso como apenas um comentário na resposta dada por @AnthonyWJones, mas pensei melhor.
O acima irá respeitar o horário de verão. Ou seja, se você adicionar um número de dias que cruzam o horário de verão, o tempo (hora) exibido será alterado para refletir isso.
Exemplo:
2 de novembro de 2014 às 02:00 era o fim do horário de verão.
Se você deseja manter o tempo no horário de verão (as 10:30 ainda serão 10:30) ...
Então, agora você tem ...
fonte
Não, o javascript não possui uma função integrada, mas você pode usar uma linha de código simples
fonte
Eu uso algo como:
Funciona com horário de verão:
Funciona com o ano novo:
Pode ser parametrizado:
fonte
Estou usando a seguinte solução.
Date tem um construtor que aceita um int. Esse argumento representa o total de milissegundos antes / depois de 1º de janeiro de 1970. Ele também possui um método setTime que faz o mesmo sem criar um novo objeto Date.
O que fazemos aqui é converter dias em milissegundos e adicionar esse valor ao valor fornecido por getTime. Por fim, fornecemos o resultado ao construtor Date (milissegundos) ou ao método setTime (milissegundos).
fonte
now.setDate(now.getDate() + days);
lida automaticamente com as alterações do horário de verão. E eu tenho que corrigir, os segundos bissextos são ignorados nos carimbos de data e hora do JS.Edit: Em vez de
setTime()
(ousetHours()
), você poderia fazê-lo desta maneira:Velho:
Em vez de usar,
setTime()
você pode usarsetHours()
:Veja o JSFiddle ...
fonte
d.setDate(d.getDate() + 1);
Código muito simples para adicionar dias na data no script java.
fonte
Há um método setDate e getDate , que permitem fazer algo assim:
Se você deseja subtrair vários dias e formatar sua data em um formato legível por humanos, considere criar um
DateHelper
objeto personalizado parecido com este:(veja também este violino )
fonte
A extensão do protótipo em javascript pode não ser uma boa ideia , especialmente em bases de código profissionais.
O que você quer fazer é estender a
Date
classe nativa :Dessa forma, se um dia o Javascript implementar um
addDays
método nativo , você não quebrará nada.fonte