Qual é a maneira mais simples de diminuir uma data em Javascript em 1 dia?
-
09-06-2019 - |
Pergunta
Preciso diminuir uma data Javascript em 1 dia, para que ela reverta meses/anos corretamente.Ou seja, se eu tiver uma data de ‘Hoje’, quero pegar a data de ‘Ontem’.
Sempre parece ser necessário mais código do que o necessário quando faço isso, então estou me perguntando se existe alguma maneira mais simples.
Qual é a maneira mais simples de fazer isso?
[Editar:Apenas para evitar confusão na resposta abaixo, esta é uma JavaScript pergunta, não Java.]
Solução
var d = new Date();
d.setDate(d.getDate() - 1);
console.log(d);
Outras dicas
var today = new Date();
var yesterday = new Date().setDate(today.getDate() -1);
day.setDate(day.getDate() -1); //will be wrong
isso retornará o dia errado.sob UTC -03:00, verifique
var d = new Date(2014,9,19);
d.setDate(d.getDate()-1);// will return Oct 17
Melhor uso:
var n = day.getTime();
n -= 86400000;
day = new Date(n); //works fine for everything
getDate()-1
deveria fazer o truque
Exemplo rápido:
var day = new Date( "January 1 2008" );
day.setDate(day.getDate() -1);
alert(day);
origDate = new Date();
decrementedDate = new Date(origDate.getTime() - (86400 * 1000));
console.log(decrementedDate);
setDate(dayValue)
dayValue
é um número inteiro de 1 a 31, representando o dia do mês.
de https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/setDate
O comportamento que resolve o seu problema (e o meu) parece estar fora do intervalo de especificações.
O que parece ser necessário são addDate(), addMonth(), addYear() ...funções.
Trabalhar com datas em JS pode ser uma dor de cabeça.Então a maneira mais simples é usar momento.js para qualquer operação de data.
Para subtrair um dia:
const date = moment().subtract(1, 'day')