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

188
Visualizações
¿Por qué la API de Google Calendar inserta mi evento 4 horas antes de la fecha/hora que le he dado usando Node.js?

Finalmente obtuve la API del calendario de Google para insertar eventos en mi calendario con Node.js, pero el evento se inserta 4 horas antes de la hora de inicio que le di.

Esto es lo que he hecho para que se inserte. En este ejemplo: la variable de fecha es '2022-05-18' y la variable de hora es '17:18' y luego cuando consola.log la variable apptDate, el resultado es 2022-05-18T17:18:00.000Z

pero el evento está insertado en mi calendario el 18-05-2022 a las 13:18.

 export const insertGoogleCalendarEvent = async (req, res)=> { try{ const {firstName, lastName, date, time, duration} = req.body const apptDate = new Date(`${date}T${time}:00.000Z`).toISOString() const SCOPES = ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.events'] const GOOGLE_PRIVATE_KEY = process.env.GOOGLE_PRIVATE_KEY const GOOGLE_CLIENT_EMAIL = process.env.GOOGLE_CLIENT_EMAIL const GOOGLE_PROJECT_NUMBER = process.env.GOOGLE_PROJECT_NUMBER const GOOGLE_CALENDAR_ID = process.env.GOOGLE_CALENDAR_ID let endDateTime = '' if (duration === '60') { let newDate = new Date(apptDate) newDate.setHours(newDate.getHours() + 1) endDateTime = newDate.toISOString() } else if (duration === '75') { let newDate = new Date(apptDate) newDate.setMinutes(newDate.getMinutes() + 75) endDateTime = newDate.toISOString() } else if (duration === '90') { let newDate = new Date(apptDate) newDate.setMinutes(newDate.getMinutes() + 90) endDateTime = newDate.toISOString() } const event = { 'summary': `${firstName} ${lastName}`, 'start': { 'dateTime': `${apptDate}`, 'timeZone': 'Canada/Eastern' }, 'end': { 'dateTime': `${endDateTime}`, 'timeZone': 'Canada/Eastern' } } const jwtClient = new google.auth.JWT( GOOGLE_CLIENT_EMAIL, null, GOOGLE_PRIVATE_KEY, SCOPES ) const calendar = google.calendar({ version: 'v3', project: GOOGLE_PROJECT_NUMBER, auth: jwtClient }) calendar.events.insert({ calendarId: GOOGLE_CALENDAR_ID, resource: event, }, { function (err, event) { if (err) { console.log('this is an error', err) return } console.log('Event created:', event.htmlLink); } }) } catch { console.log('error') } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Una razón podría ser la parte .00Z al final de la variable appDate , ya que se refiere a la zona horaria UTC (Z significa UTC o hora zulú). Intente configurar la zona horaria necesaria utilizando el formato -04:00 (Canadá/Este) al final.

Ejemplo

 const apptDate = new Date(`${date}T${time}:00-04:00`).toISOString()

Actualizar

Después de revisar el problema nuevamente, creo que la API ajustó la fecha y la hora que configuró en la variable apptDate ( .000Z , UTC) a la zona horaria que especificó en la opción timeZone . En este caso, es Canada/Eastern , UTC-4 horas, por lo que eliminó 4 horas de lo que configuró.

La documentación dateTime dice

La hora, como un valor combinado de fecha y hora (formateado según RFC3339). Se requiere un desplazamiento de zona horaria a menos que se especifique explícitamente una zona horaria en timeZone.

Entonces, un enfoque más limpio sería usar apptDate tal como está (UTC), sin la opción timeZone .

Ejemplo

 const apptDate = new Date(`${date}T${time}:00.000Z`).toISOString() ... 'start': { 'dateTime': `${apptDate}` }, 'end': { 'dateTime': `${endDateTime}` }

Más información

Documentación de la API de calendario

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