Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

475
Vistas
Cómo restar 5 días de una fecha definida - Google App Script

Estoy tratando de escribir un script para restar 5 días de una fecha definida, pero parece que no funciona, aquí está mi código:

 var End_Day = sheet.getRange(i + 2, 20).getValue(); Logger.log(End_Day); var End_day_2 = new Date(); End_day_2.setDate(End_Day.getDate()-5); Logger.log(End_day_2);

y el resultado no es solo - 5 días:

 11:18:47 AM Info Sat Jun 04 00:00:00 GMT+08:00 2022 11:18:47 AM Info Fri Apr 29 11:18:47 GMT+08:00 2022

Estoy bastante confundido por qué la fecha se movió de junio a abril.

Gracias por echar un vistazo

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Probar:

 var End_Day = sheet.getRange(i + 2, 20).getValue(); var End_day_2 = new Date(End_Day.getTime() - (5 * (1000 * 60 * 60 * 24))) Logger.log(End_Day); Logger.log(End_day_2);

Función:

 const endDay = sheet.getRange(i + 2, 20).getValue() const endDay2 = DateFromDaysAgo(endDay, 5) ... function DateFromDaysAgo(startDate, number) { if (typeof startDate === `string`) { startDate = new Date(startDate) } return new Date(startDate.getTime() - (number * (1000 * 60 * 60 * 24))) }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Si lo que proviene de la hoja es una cadena, deberá convertir la cadena de fecha en un objeto de fecha.

La otra cosa es que tienes que trabajar en milisegundos como dice @vanowm:

60 60 24*5 = 432000 * 1000 = 432000000

así que omitiendo la hoja por completo:

 x = new Date > Fri May 27 2022 11:24:01 GMT-0400 (Eastern Daylight Time) y = new Date(x - 432000000) > Sun May 22 2022 11:24:01 GMT-0400 (Eastern Daylight Time)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Debería obtener más información sobre Date.prototype.setDate() . Solo cambia el día del mes de una instancia de Date dada.

Como el código que publicaste, el día del mes de End_Day es 4 , End_day_2.setDate(4 - 5) es igual a End_day_2.setDate(-1) y el mes de End_day_2 es abril según el resultado de la consola, porque hay 30 días en abril, setDate(-1) significa setDate(29) , por lo que obtuvo el Apr 29 al final. Así es como va.

Una forma correcta de hacerlo es restar 5 días en milisegundos.

 function addDays(date, days){ const DAY_IN_MILLISECONDS = 24 * 60 * 60000; return new Date(date.getTime() + days * DAY_IN_MILLISECONDS); } console.log(addDays(new Date(), -5).toString()); // 5 days ago

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda