Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

482
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda