═══════════════════════════════════════════════════════════════════
ROOT CAUSE IDENTIFIED: Daylight Saving Time Bug in Zoom API
═══════════════════════════════════════════════════════════════════
THE SMOKING GUN:
User reported: “Issues noticed in the last two weeks”
Date of report: January 28, 2026
Timeline:
- Meetings created: April-August 2025 (during MDT)
- Worked fine: April → November 2025
- DST ended: November 2, 2025 (clocks fell back)
- Problems started: ~January 2026 (2+ months after DST change)
THE PROBLEM:
Zoom’s API is returning INCORRECT UTC times for recurring meetings that:
- Were created during Daylight Saving Time (MDT, UTC-6)
- Are now generating occurrences during Standard Time (MST, UTC-7)
MATHEMATICAL PROOF:
Meeting ID 85345560457 configured for 5pm Denver:
CORRECT BEHAVIOR:
During MDT (summer): 5pm MDT = 5pm + 6 hours = 23:00 UTC (11pm)
During MST (winter): 5pm MST = 5pm + 7 hours = 00:00 UTC next day (midnight)
WHAT ZOOM IS DOING (WRONG):
Occurrences in Jan 2026: Returns 2026-01-30T06:00:00Z
This equals: 6am UTC = 11pm MST (previous day)
WHAT ZOOM SHOULD DO:
Occurrences in Jan 2026: Should return 2026-01-30T00:00:00Z
This equals: midnight UTC = 5pm MST (previous day) ✓
THE OFFSET PATTERN:
Meeting 85345560457: 06:00 UTC (should be 00:00)
- 6 hours too late
- This is exactly the MDT offset (UTC-6)
- Zoom is applying summer offset to winter occurrences!
Meeting 84538274892: 09:00 UTC
- 9 hours too late
- This suggests either:
- Meeting was created in Pacific Time (UTC-8) + DST issue
- Or double offset error
Meeting 89035466055: 00:00 UTC ✓ CORRECT
- Likely created during MST (winter)
- Or created recently after Zoom fixed their bug
- Or manually corrected in Zoom interface
SUPPORTING EVIDENCE:
-
User reports meeting “occurrence already passed”
- Trying to join at 5pm Thursday
- System thinks meeting was at 11pm Thursday (already happened)
- This is because Zoom returned 06:00 UTC = 11pm Wednesday
-
Yahoo email fix was unnecessary
- The issue wasn’t email format
- The issue was meeting times being wrong in the data
-
Timing of problem discovery
- Not noticed until January (2 months after DST change)
- Suggests gradual realization as affected meetings approached
-
Some meetings work, others don’t
- Pattern matches MDT vs MST creation time
WHY YOUR CODE IS CORRECT:
Your code is doing EXACTLY what it should:
Input: 2026-01-30T06:00:00Z (what Zoom sends)
Process: 6am UTC - 7 hours MST offset = 11pm previous day
Output: 2026-01-29 23:00:00 MST
This is mathematically perfect. The bug is in Zoom’s data.
hi @mistersoader
Thanks for reaching out to us and sharing your findings.
Are you still having this issue at the moment?
Yes. We circumvented the issue by putting times in our titles and then parsing the correct time. Until Zoom does something to correct the data, we have a fix. Can you replicate the issue or is it just a corruption in our account? It appears when I am in Zoom the data is ok. It is just when we pull the data through the API that the occurrences are not correctly coded with the correct time for the ocurrences. Presumably they will be fixed once we hit daylight savings.
Hi @mistersoader
I have not been able to replicate the issue in my test account, but if you could grab me some reponse bodies with Data that can show this missmatch, I can raise this issue to our Engineering team
Zoom Engineering Team,
I’m experiencing timezone bugs with recurring meetings. Your API returns “America/Denver” correctly in the timezone field, but the UTC times in start_time don’t match. Example: Meeting ID 84538274892 - “Thursdays 7pm Denver time” - Before DST: Returns 09:00:00Z (should be 02:00:00Z next day) - After DST: Returns 08:00:00Z (should be 01:00:00Z next day) The DST transition on March 8, 2026 causes time shifts, but BOTH before and after times are incorrect by multiple hours. Attached is the full API response log showing multiple meetings with this issue, including several that span the DST boundary. Meeting IDs showing the bug: - 84538274892 (clearest example - spans DST) - 83824029213 (10am Saturdays showing as midnight UTC) - 85345560457 (18 occurrences spanning DST)
[24-Feb-2026 18:10:15 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:15 America/Denver] Meeting ID: 84649918404
[24-Feb-2026 18:10:15 America/Denver] Meeting Topic: Digital and Technology meeting recurring Mondays 3pm
[24-Feb-2026 18:10:15 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:15 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:15 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:15 America/Denver] Total Occurrences Returned: 0
[24-Feb-2026 18:10:15 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:15 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:15 America/Denver] Meeting ID: 86464020941
[24-Feb-2026 18:10:15 America/Denver] Meeting Topic: GA meeting recurring Tuesdays 6pm
[24-Feb-2026 18:10:15 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:15 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:15 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:15 America/Denver] Total Occurrences Returned: 0
[24-Feb-2026 18:10:15 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:15 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:15 America/Denver] Meeting ID: 85843191177
[24-Feb-2026 18:10:15 America/Denver] Meeting Topic: Jural Zoom meeting Wednesdays 8pm.
[24-Feb-2026 18:10:15 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:15 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:15 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:15 America/Denver] Total Occurrences Returned: 0
[24-Feb-2026 18:10:15 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:15 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:15 America/Denver] Meeting ID: 86792134598
[24-Feb-2026 18:10:15 America/Denver] Meeting Topic: Outreach Zoom Meeting members only Wednesdays 6pm
[24-Feb-2026 18:10:15 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:15 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:15 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:15 America/Denver] Total Occurrences Returned: 0
[24-Feb-2026 18:10:15 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:16 America/Denver] Meeting ID: 87844203557
[24-Feb-2026 18:10:16 America/Denver] Meeting Topic: C.A.M.P. Militia Committee 4th Wednesday every month at 7PM.
[24-Feb-2026 18:10:16 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:16 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Total Occurrences Returned: 2
[24-Feb-2026 18:10:16 America/Denver] Occurrence 1: start_time=2026-02-25T08:00:00Z | duration=60
[24-Feb-2026 18:10:16 America/Denver] Occurrence 2: start_time=2026-03-25T07:00:00Z | duration=60
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:16 America/Denver] Meeting ID: 87347971998
[24-Feb-2026 18:10:16 America/Denver] Meeting Topic: C.A.M.P. Militia Committee 2nd Wednesday every month at 7PM.
[24-Feb-2026 18:10:16 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:16 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Total Occurrences Returned: 4
[24-Feb-2026 18:10:16 America/Denver] Occurrence 1: start_time=2026-03-11T07:00:00Z | duration=60
[24-Feb-2026 18:10:16 America/Denver] Occurrence 2: start_time=2026-04-08T07:00:00Z | duration=60
[24-Feb-2026 18:10:16 America/Denver] Occurrence 3: start_time=2026-05-13T07:00:00Z | duration=60
[24-Feb-2026 18:10:16 America/Denver] Occurrence 4: start_time=2026-06-10T07:00:00Z | duration=60
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:16 America/Denver] Meeting ID: 89035466055
[24-Feb-2026 18:10:16 America/Denver] Meeting Topic: Meeting Guidelines, Protocols,… 5pm Thursdays
[24-Feb-2026 18:10:16 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:16 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Total Occurrences Returned: 0
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:16 America/Denver] Meeting ID: 85843191177
[24-Feb-2026 18:10:16 America/Denver] Meeting Topic: Jural Zoom meeting Wednesdays 8pm.
[24-Feb-2026 18:10:16 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:16 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Total Occurrences Returned: 0
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:16 America/Denver] Meeting ID: 85115378971
[24-Feb-2026 18:10:16 America/Denver] Meeting Topic: New Member Thursdays 6pm
[24-Feb-2026 18:10:16 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:16 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Total Occurrences Returned: 0
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:16 America/Denver] Meeting ID: 87047350097
[24-Feb-2026 18:10:16 America/Denver] Meeting Topic: Litigation Fridays recurring valid until March 9 2026
[24-Feb-2026 18:10:16 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:16 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Total Occurrences Returned: 2
[24-Feb-2026 18:10:16 America/Denver] Occurrence 1: start_time=2026-02-28T06:00:00Z | duration=120
[24-Feb-2026 18:10:16 America/Denver] Occurrence 2: start_time=2026-03-07T06:00:00Z | duration=120
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:16 America/Denver] Meeting ID: 84649918404
[24-Feb-2026 18:10:16 America/Denver] Meeting Topic: Digital and Technology meeting recurring Mondays 3pm
[24-Feb-2026 18:10:16 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:16 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Total Occurrences Returned: 0
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:16 America/Denver] Meeting ID: 86464020941
[24-Feb-2026 18:10:16 America/Denver] Meeting Topic: GA meeting recurring Tuesdays 6pm
[24-Feb-2026 18:10:16 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:16 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:16 America/Denver] Total Occurrences Returned: 0
[24-Feb-2026 18:10:16 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:17 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:17 America/Denver] Meeting ID: 85345560457
[24-Feb-2026 18:10:17 America/Denver] Meeting Topic: Zoom Recordings for General Public Thursdays 5pm
[24-Feb-2026 18:10:17 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:17 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:17 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:17 America/Denver] Total Occurrences Returned: 18
[24-Feb-2026 18:10:17 America/Denver] Occurrence 1: start_time=2026-02-27T06:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 2: start_time=2026-03-06T06:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 3: start_time=2026-03-13T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 4: start_time=2026-03-20T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 5: start_time=2026-03-27T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 6: start_time=2026-04-03T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 7: start_time=2026-04-10T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 8: start_time=2026-04-17T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 9: start_time=2026-04-24T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 10: start_time=2026-05-01T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 11: start_time=2026-05-08T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 12: start_time=2026-05-15T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 13: start_time=2026-05-22T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 14: start_time=2026-05-29T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 15: start_time=2026-06-05T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 16: start_time=2026-06-12T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 17: start_time=2026-06-19T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] Occurrence 18: start_time=2026-06-26T05:00:00Z | duration=75
[24-Feb-2026 18:10:17 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:17 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:17 America/Denver] Meeting ID: 87419862159
[24-Feb-2026 18:10:17 America/Denver] Meeting Topic: (P.S.)Outreach Presentation to those inquiring [3rd Wednesdays 6:30pm]
[24-Feb-2026 18:10:17 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:17 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:17 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:17 America/Denver] Total Occurrences Returned: 12
[24-Feb-2026 18:10:17 America/Denver] Occurrence 1: start_time=2026-03-18T06:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 2: start_time=2026-04-15T06:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 3: start_time=2026-05-20T06:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 4: start_time=2026-06-17T06:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 5: start_time=2026-07-15T06:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 6: start_time=2026-08-19T06:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 7: start_time=2026-09-16T06:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 8: start_time=2026-10-21T06:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 9: start_time=2026-11-18T07:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 10: start_time=2026-12-16T07:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 11: start_time=2027-01-20T07:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] Occurrence 12: start_time=2027-02-17T07:30:00Z | duration=180
[24-Feb-2026 18:10:17 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:17 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:17 America/Denver] Meeting ID: 84538274892
[24-Feb-2026 18:10:17 America/Denver] Meeting Topic: Zoom GA Member Retention Thursdays 7pm
[24-Feb-2026 18:10:17 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:17 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:17 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:17 America/Denver] Total Occurrences Returned: 6
[24-Feb-2026 18:10:17 America/Denver] Occurrence 1: start_time=2026-02-26T09:00:00Z | duration=60
[24-Feb-2026 18:10:17 America/Denver] Occurrence 2: start_time=2026-03-05T09:00:00Z | duration=60
[24-Feb-2026 18:10:17 America/Denver] Occurrence 3: start_time=2026-03-12T08:00:00Z | duration=60
[24-Feb-2026 18:10:17 America/Denver] Occurrence 4: start_time=2026-03-19T08:00:00Z | duration=60
[24-Feb-2026 18:10:17 America/Denver] Occurrence 5: start_time=2026-03-26T08:00:00Z | duration=60
[24-Feb-2026 18:10:17 America/Denver] Occurrence 6: start_time=2026-04-02T08:00:00Z | duration=60
[24-Feb-2026 18:10:17 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
[24-Feb-2026 18:10:17 America/Denver] === ZOOM TIMEZONE EVIDENCE START ===
[24-Feb-2026 18:10:17 America/Denver] Meeting ID: 83824029213
[24-Feb-2026 18:10:17 America/Denver] Meeting Topic: Elections recurring on Saturdays at 10am until the elections.
[24-Feb-2026 18:10:17 America/Denver] Meeting Type: 8
[24-Feb-2026 18:10:17 America/Denver] Timezone Field from Zoom API: America/Denver
[24-Feb-2026 18:10:17 America/Denver] Expected Timezone: America/Denver
[24-Feb-2026 18:10:17 America/Denver] Total Occurrences Returned: 5
[24-Feb-2026 18:10:17 America/Denver] Occurrence 1: start_time=2026-03-01T00:00:00Z | duration=120
[24-Feb-2026 18:10:17 America/Denver] Occurrence 2: start_time=2026-03-08T00:00:00Z | duration=120
[24-Feb-2026 18:10:17 America/Denver] Occurrence 3: start_time=2026-03-14T23:00:00Z | duration=120
[24-Feb-2026 18:10:17 America/Denver] Occurrence 4: start_time=2026-03-21T23:00:00Z | duration=120
[24-Feb-2026 18:10:17 America/Denver] Occurrence 5: start_time=2026-03-28T23:00:00Z | duration=120
[24-Feb-2026 18:10:17 America/Denver] === ZOOM TIMEZONE EVIDENCE END ===
Thanks @mistersoader
I created an internal ticket for our Engineering team to look into this (ZSEE-195931 for reference)
I will get back to you as soon as I hear back from my team
Hello @mistersoader
I sent you a DM, please follow up there