Eu tenho uma caixa de entrada de calendário inicial e uma caixa de entrada de calendário final. Queremos que os padrões iniciem a caixa de entrada do calendário 30 dias antes da data atual e a caixa de entrada do calendário final seja a data atual. Aqui está minha data vars.
var today = new Date(),
dd = today.getDate(),
mm = today.getMonth(),
yyyy = today.getFullYear(),
month = ["January", "February", "March",
"April", "May", "June", "July", "August",
"September", "October" "November", "December"],
startdate = month[mm] + ", " + yyyy.toString();
A data de término seria algo como var enddate = startdate - 30;
Obviamente, isso não funcionará.
Portanto, se a data atual for 30 de dezembro de 2011, gostaria que a data de início fosse 1º de dezembro de 2011.
EDIT: Minha pergunta foi respondida ... mais ou menos. Date.today();
e Date.today().add(-30);
funciona, mas preciso da data no formato de January 13, 2012
. Não Fri Jan 13 2012 10:48:56 GMT -055 (EST)
. Qualquer ajuda?
MAIS EDITAR: como este artigo foi escrito, 2018. Basta usar Moment.js . Este é o melhor.
fonte
Respostas:
Tente usar a excelente biblioteca de datas JavaScript Datejs (o original não é mais mantido, então você pode estar interessado nesta bifurcação mantida ativamente ):
[Editar]
Veja também a excelente biblioteca de datas JavaScript Moment.js :
fonte
moment( moment().subtract(30, 'days') ).format("YYYY-MM-DD")
moment()
abordagem e acrescentei otoDate()
método para recuperar o objeto de data JavaScript. Obrigado!Tente isto
Conforme observado por @Neel, este método retorna no formato Javascript Timestamp. Para convertê-lo de volta ao objeto de data, você precisa passar o acima para um novo objeto de Data;
new Date(priorDate)
.fonte
new Date(priorDate)
setDate()
umDate
objeto. Porém, é impossível diagnosticar sem ver seu código.Esta é uma solução feia para você:
fonte
O
.getTime()
método retorna um carimbo de data / hora JS padrão (milissegundos desde 01/01/1970) no qual você pode usar operações matemáticas regulares, que podem ser alimentadas de volta para o objeto Date diretamente.fonte
Obtenha os próximos 30 dias a partir de hoje
Obtenha o formulário dos últimos 30 dias hoje
fonte
Javascript pode lidar com isso sem quaisquer bibliotecas externas.
fonte
Fácil.
(Using Vanilla JS)
ISOFormat?
fonte
Eu uso date.js . Ele lida com isso facilmente e cuida de todas as maldades do ano bissexto.
fonte
Eu vou preferir o momento js
fonte
Esta é uma versão ES6
fonte
Você pode fazer isso simplesmente por meio de 1 linha de código usando momento no Node JS. :)
Não quer o formato UTC, FÁCIL: P
fonte
Se você não estiver inclinado a momentos, você pode usar isto:
let x = new Date()
x.toISOString(x.setDate(x.getDate())).slice(0, 10)
Basicamente, ele obtém a data atual (valor numérico da data do mês atual) e, em seguida, define o valor. Em seguida, ele é convertido para o formato ISO, a partir do qual eu divido a data numérica pura (ou seja, 23/09/2019)
Espero que ajude alguém.
fonte
let today = new Date()
let last30Days = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 30)
last30Days
estará em Date Objectfonte