Tengo una variable que tiene un valor de 2017-11-10 y me gustaría obtener 3 días antes de 2017-11-10 que es 2017-11-7

Parece que solo funciona si tiene una marca de tiempo completa. Sin embargo, eliminé el tiempo de mi marca de tiempo.

let d = new Date();
d.setDate(d.getDate()-1);

¿Hay alguna forma de hacer esto sin tiempo?

1
Ohsik 14 nov. 2017 a las 04:57

2 respuestas

La mejor respuesta

Aquí hay algunas opciones para obtener una cadena de fecha en formato aaaa-m-d:

var d = new Date( new Date("2017-11-10" + "z") - 3 * 864e5 ) // specify Zulu time zone to avoid conversion to local time

console.log( d.toJSON().slice(0, 10) ) // "2017-11-07"

console.log( d.toJSON().slice(0, 10).replace('-0', '-') ) // "2017-11-7"

console.log( d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() ) // "2017-11-7"

La información de la zona horaria se puede agregar a la cadena de fecha para evitar la conversión a la hora local:

console.log( new Date("2000-1-2") ) // "2000-01-01T05:00:00.000Z" ("T05:" because converted to local time)

// correct "2000-01-01T00:00:00.000Z"
console.log( new Date("2000-01-02") )   
console.log( new Date("2000-1-2 Z") )  
console.log( new Date("2000-1-2 GMT") ) 
console.log( new Date("2000-1-2 UTC") ) 

console.log( new Date("2000-1-2 z-1234") ) // "2000-01-02T12:34:00.000Z" ha ..
2
Slai 14 nov. 2017 a las 16:10

Puede iniciar su cadena de fecha en la fecha de JavaScript como se muestra a continuación

let d = new Date(2017, 10, 10);
d.setDate(d.getDate()-3);
0
i3lai3la 14 nov. 2017 a las 02:02