Timezone Issue When Creating Google Calendar Events

Describe the problem/error/question

Hi all,

I’m running into a timezone issue when creating calendar events using an AI agent in n8n. The model correctly interprets my intent and even confirms the right time in its response. For example, it says:

“The meeting with Stanley has been successfully scheduled for tomorrow, March 27, 2025, from 3 PM to 4 PM Taipei Time.”

However, the actual event created in Google Calendar ends up being at 11 PM instead of 3 PM. Looking at the data sent to the Calendar API, I see this:

“start”: {
“dateTime”: “2025-03-27T23:00:00+08:00”,
“timeZone”: “Asia/Taipei”
},
“end”: {
“dateTime”: “2025-03-28T00:00:00+08:00”,
“timeZone”: “Asia/Taipei”
}

It looks like the agent interprets “3 PM Taipei Time” as UTC and then adds 8 hours, causing the event to be scheduled at 11 PM local time.

Since the agent already knows it’s 3 PM in Taipei, is there a way to prevent this extra offset from being applied when filling in the event info?

Would appreciate any help or suggestions—thanks in advance!

Information on your n8n setup

  • n8n version: n8n cloud
  • **Database (default: SQLite):**default
  • n8n EXECUTIONS_PROCESS setting (default: own, main): default
  • Running n8n via (Docker, npm, n8n cloud, desktop app): cloud
  • Operating system: Mac

I think you’re right on the edge of solving this.

This kind of issue usually happens when the datetime string already includes a timezone offset (like +08:00 for Taipei), but the Calendar API also tries to interpret the time based on the timeZone field — effectively applying the offset twice. Classic!

In the JSON you’re sending to the Calendar API, either:

Include only the raw datetime string without the timezone offset, and keep the timeZone field (Google will localize it properly),
OR
Use the full ISO datetime string with the offset, but omit the timeZone field, so there’s no duplication.

So for your case, maybe try:

json

“start”: {

“dateTime”: “2025-03-27T15:00:00”,

“timeZone”: “Asia/Taipei”

}

OR

json

“start”: {

“dateTime”: “2025-03-27T15:00:00+08:00”

}

…but not both at the same time.

Actually, this reminds me of a very similar mess I had while building an onboarding workflow for a school system client. I had events getting pushed to parents’ calendars 5 hours off — some even at midnight :melting_face:. Turned out I was passing both the UTC offset and the time zone label, just like you. Once I cleaned that up, everything aligned perfectly.

Let me know if this solves it for you — happy to help more if it doesn’t!

Hey @Ibrahim_Sajid_Malick, I find your answer to be correct & accurate. How can I implement this in my workflow.

Context:

When I used the dateTime string without the timezone offset, the event is created correctly on google calendar. However, when I try performing date transformations to get the exact date string to create the event, the event is offset by 1hr as shown in the output. How can I fix this?

Attached are some screen shots for clarity.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.