Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

476
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!