Como posso calcular ontem como uma data em JavaScript?
javascript
date
Ómega
fonte
fonte
getDate
retornar o dia do mês (por exemplo: 1 - 31), mas na verdadesetDate(0)
define a data para o último dia do mês anterior. Isso funciona em todos os navegadores?Não é muito eficiente, mas como oneliner:
O exposto acima cria três
Date
objetos desnecessariamente desnecessários. Isso pode ser reduzido a uma única instanciação com:Ou, se você preferir:
Ou, se você preferir o ES6 com a função de seta:
fonte
var yesterday = (function(d){ d.setDate(d.getDate()-1); return d})(new Date)
Tente isto
fonte
Surpreendentemente, nenhum ponto de resposta para a solução mais fácil entre navegadores
Para encontrar exatamente a mesma hora ontem:
Ou seja, se você quer ficar livre de dependência, caso contrário, eu recomendaria usar http://momentjs.com
fonte
Para generalizar a pergunta e fazer outros cálculos de diferenças, use:
isso cria um novo objeto de data com base no valor "now" como um número inteiro que representa a época do unix em milissegundos subtraindo um dia.
Dois dias atrás:
Uma hora atrás:
fonte
new Date(Date.parse(new Date()) - 86400000)
. Embora eu goste de Date.now (), então talvez eu tente isso. Isso salvará uma data extra.Eu uso a biblioteca de momentos , é muito flexível e fácil de usar.
No seu caso:
fonte
subtract
vez deadd
fonte
fonte
fonte
Isso será produzido ontem às 00:00 com precisão de minutos
fonte
fará o truque
fonte
d.setHours(-1,0,0,0)
. Isso retornará a data de ontem, mas pode não ser a hora que você deseja (23:00:00)Faça uma tentativa, funciona para mim:
Isso me deu um objeto de data de volta para ontem
fonte
var yesterday = new Date(); yesterday.setDate(today.GetDate() - 1)
assim você pode usar tanto hoje como ontemAqui está um liner que é usado para obter a data de ontem no formato AAAA-MM-DD no texto e manipular o deslocamento do fuso horário.
Obviamente pode ser alterado para retornar a data, x dias no tempo. Para incluir tempo etc.
fonte
Se você deseja obter a data de ontem e formatar essa data em um formato legível por humanos, considere criar um
DateHelper
objeto personalizado que se parece com isso:(veja também este violino )
fonte
Você pode usar momentjs; é muito útil que você consiga muitas coisas com esta biblioteca.
Obter data de ontem com o tempo atual
moment().subtract(1, 'days').toString()
Obter a data de ontem com o início da data
moment().subtract(1, 'days').startOf('day').toString()
fonte
resolver o problema da data limite (2020, 01, 01) -> 2019, 12, 31
fonte
"Date.now () - 86400000" não funcionará no dia final do horário de verão (que tem 25 horas naquele dia)
Outra opção é usar o Closure:
fonte