¿Alguien sabe de una manera fácil de tomar una cita (por ejemplo, hoy) y retroceder X días?
Entonces, por ejemplo, si quiero calcular la fecha 5 días antes de hoy.
javascript
date
datetime
jonhobbs
fuente
fuente
Respuestas:
Intenta algo como esto:
Tenga en cuenta que esto modifica el objeto de fecha y devuelve el valor de tiempo de la fecha actualizada.
fuente
new Date(new Date().setDate(new Date().getDate()-5))
eso será hace 5 días. En el ejemplo de la respuesta, páselo a una nueva fecha para obtener un objeto de fecha. Entoncesnew Date(d)
es lo que quieres.setDate(-1)
fijará la fecha para el último día del mestoString
métodos comotoISOString
,toDateString
, etc.Si está realizando muchas manipulaciones de fecha dolorosas en toda su aplicación web, DateJS le hará la vida mucho más fácil:
http://simonwillison.net/2007/Dec/3/datejs/
fuente
getTime()
ysetTime()
son milisegundos desde la época. No debería importar si el tiempo cruza el límite de un año.Es algo parecido a esto:
fuente
function getDaysAgo(b){var a=new Date;a.setDate(a.getDate()-b);return a};
entonces solovar daysAgo45 = getDaysAgo(45);
Noté que getDays + X no funciona durante los límites de día / mes. El uso de getTime funciona siempre que su fecha no sea anterior a 1970.
fuente
obtener moment.js. Todos los niños geniales lo usan. Tiene más opciones de formato, etc. Donde
¡Opcional! Convierte a JS Date obj para enlace angular.
¡Opcional! Formato
fuente
Hice este prototipo para Date para poder pasar valores negativos para restar días y valores positivos para agregar días.
Entonces, para usarlo, simplemente puedo escribir:
fuente
d.setDate(d.getDate() + days)
valores positivos y negativos para días para sumar y restar días respectivamente. Y debería funcionar en la instancia (como lo hacen otros métodos de fecha), no crear y devolver una copia.Algunas de las soluciones existentes estaban cerca, pero no exactamente lo que quería. Esta función funciona con valores positivos o negativos y maneja casos límite.
fuente
Me gusta hacer las matemáticas en milisegundos. Entonces usa
Date.now()
y si te gusta formateado
NOTA:
Date.now()
no funciona en navegadores antiguos (por ejemplo, IE8, creo). Polyfill aquí .ACTUALIZACIÓN Junio 2015
@socketpair señaló mi descuido. Como él / ella dice "Algún día del año tienen 23 horas, y unas 25 debido a las reglas de zona horaria".
Para ampliar eso, la respuesta anterior tendrá imprecisiones de horario de verano en el caso de que desee calcular el día LOCAL hace 5 días en una zona horaria con cambios de horario de verano y usted
Date.now()
le da el tiempo actual LOCAL ahora, o.toString()
que devuelve la fecha local y, por lo tanto, es incompatible con laDate.now()
fecha base en UTC.Sin embargo, funciona si está haciendo sus matemáticas todo en UTC, por ejemplo
A. Desea la fecha UTC hace 5 días desde NOW (UTC)
B. Comienza con una fecha base UTC distinta de "ahora", utilizando
Date.UTC()
fuente
Me parece que un problema con el método getDate () / setDate () es que convierte todo fácilmente en milisegundos, y la sintaxis a veces es difícil de seguir.
En cambio, me gusta evitar el hecho de que 1 día = 86,400,000 milisegundos.
Entonces, para su pregunta particular:
Funciona de maravilla.
Uso este método todo el tiempo para hacer cálculos de 30/60/365 días.
Puede extrapolarlo fácilmente para crear unidades de tiempo para meses, años, etc.
fuente
divida su fecha en partes, luego devuelva una nueva Fecha con los valores ajustados
Recuerde que los meses están basados en cero, pero los días no. es decir, nueva Fecha (2009, 1, 1) == 01 de febrero de 2009, nueva Fecha (2009, 1, 0) == 31 de enero de 2009;
fuente
Sin usar la segunda variable, puede reemplazar 7 por su espalda x días:
fuente
fuente
He creado una función para la manipulación de la fecha. Puede sumar o restar cualquier número de días, horas, minutos.
Ahora, llame a esta función pasando parámetros. Por ejemplo, aquí hay una llamada a la función para obtener la fecha antes de 3 días a partir de hoy.
fuente
fuente
Las principales respuestas condujeron a un error en mi código donde el primer día del mes establecería una fecha futura en el mes actual. Aquí esta lo que hice,
fuente
Una manera fácil de administrar las fechas es usar Moment.js
Puedes usar
add
. EjemploDocs http://momentjs.com/docs/#/manipulating/add/
fuente
Me gusta lo siguiente porque es una línea. No es perfecto con los cambios de horario de verano, pero generalmente es lo suficientemente bueno para mis necesidades.
fuente
para mí, todas las combinaciones funcionaron bien con el siguiente código snipplet, el fragmento es para la implementación de Angular-2, si necesita agregar días, pase un número positivo de días, si necesita restar pasar un número negativo de días
fuente
Obtengo un buen kilometraje desactualizado.
http://www.datejs.com/
¡Agradable!
El sitio web incluye esta belleza:
fuente
Si desea restar un número de días y formatear su fecha en un formato legible por humanos, debería considerar crear un
DateHelper
objeto personalizado que se vea así:(ver también este violín )
fuente
Vea el siguiente código, reste los días de la fecha actual. Además, configure el mes según la fecha restada.
fuente
Al configurar la fecha, la fecha se convierte a milisegundos, por lo que debe volver a convertirla en una fecha:
Este método también tiene en cuenta el cambio de año nuevo, etc.
fuente
Puedes usar Javascript.
Para PHP,
Espero que te ayude.
fuente
Me convertí a milisegundos y deduje los días que el mes y el año no cambiarán y lógico
La esperanza ayuda
fuente
fuente
Uso de la sintaxis de la función JavaScript moderna
fuente
Intenta algo como esto
currDate podría ser cualquier fecha
El límite podría ser la diferencia en el número de días (positivo para el futuro y negativo para el pasado)
fuente
Esto le dará el resultado de los últimos 10 días 110% de trabajo, no obtendrá ningún tipo de problema
puedes cambiar los días de resta de acuerdo a tus requerimientos
fuente
fuente
fuente