javascript - tag - title of page html
¿Cómo obtener 30 días antes de la fecha actual? (9)
Tengo un cuadro de entrada del calendario de inicio y un cuadro de entrada del calendario de fin. Queremos que los valores predeterminados inicien el cuadro de entrada del calendario 30 días antes de la fecha actual y que el cuadro de entrada del calendario final sea la fecha actual. Aquí está mi fecha 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();
La fecha de finalización sería algo como var enddate = startdate - 30;
Obviamente esto no funcionará.
Entonces, si la fecha actual es el 30 de diciembre de 2011, me gustaría que la fecha de inicio se lea el 1 de diciembre de 2011.
EDIT: Mi pregunta fue respondida ... más o menos. Date.today();
y Date.today().add(-30);
Trabajo pero necesito la fecha en el formato del January 13, 2012
de January 13, 2012
. No Fri Jan 13 2012 10:48:56 GMT -055 (EST)
. ¿Alguna ayuda?
MÁS EDICIÓN: A partir de este escrito es el 2018. Solo usa Moment.js . Es el mejor.
Aquí hay una solución fea para ti:
var date = new Date(new Date().setDate(new Date().getDate() - 30));
Esta es una versión ES6
let date = new Date()
let newDate = new Date(date.setDate(date.getDate()-30))
console.log(newDate.getMonth()+1 + ''/'' + newDate.getDate() + ''/'' + newDate.getFullYear() )
Fácil.
let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000);
ISOFormato?
let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();
Intente usar la excelente biblioteca de fechas de Datejs JavaScript (el original ya no se mantiene, por lo que puede estar interesado en esta bifurcación mantenida activamente ):
Date.today().add(-30).days(); // or...
Date.today().add({days:-30});
[Editar]
Vea también la excelente biblioteca de fechas de Moment.js JavaScript :
moment().subtract(30, ''days''); // or...
moment().add(-30, ''days'');
Javascript puede manejarlo sin ninguna librería externa.
var today = new Date();
var dateLimit = new Date(new Date().setDate(today.getDate() - 30));
document.write(today + "<br/>" + dateLimit)
Prefiero el momento js
startDate = moment().subtract(30, ''days'').format(''LL'') // January 29, 2015
endDate = moment().format(''LL''); // February 28, 2015
Prueba esto
var today = new Date()
var priorDate = new Date().setDate(today.getDate()-30)
Como lo señaló @Neel, este método retorna en formato de marca de tiempo de Javascript. Para volver a convertirlo en objeto de fecha, debe pasar lo anterior a un nuevo objeto Fecha; new Date(priorDate)
.
Yo uso date.js. Maneja esto fácilmente y se encarga de toda la maldad del año bisiesto.
startDate = new Date(today.getTime() - 30*24*60*60*1000);
El método .getTime()
devuelve una marca de tiempo JS estándar (milisegundos desde el 1 de enero de 1970) en la que puede usar operaciones matemáticas regulares, que se pueden enviar al objeto Date directamente.