The problem: handoffs across three regions and why timestamps break things
Imagine an outage that starts at 02:15 local time in Tokyo, wakes the on-call engineer there, and then is handled through a handoff to a team in Berlin and finally to a follow-the-sun engineer in Los Angeles. If timestamps in logs, chat, and your incident runbook use different conventions (local time, ambiguous abbreviations, or plain Unix seconds with no timezone), you will get duplicated work, missed alerts, and confusing postmortems.
This article explains the practical pieces developers and incident commanders need to keep handoffs reproducible across three regions: UTC basics, named time zones, offsets, daylight-saving transitions, meeting invites, and a concrete template for reproducible incident notes you can paste into a ticket or Slack thread.
UTC, offsets, and named time zones
At a minimum you should understand three concepts:
- UTC — Coordinated Universal Time, an unambiguous, timezone-less reference. Use it as your canonical timeline anchor.
- Offset — A numeric difference like +02:00 or -08:00. Offsets do not carry DST rules or historical changes.
- Named IANA zones — Strings like
Asia/Tokyo,Europe/Berlin, orAmerica/Los_Angeles. These carry the DST rules and historical shifts recorded in the IANA tz database.
UTC vs offsets vs names — when to use which
Record logs and incident timestamps in ISO 8601 with a UTC Z suffix (for example 2026-08-19T01:15:00Z) or with a named zone when communicating local context (2026-08-19T10:15:00+09:00 [Asia/Tokyo]). Offsets are useful for display but not authoritative: they don’t tell you whether DST applied at that date.
Daylight-saving transitions and edge cases
Daylight-saving time (DST) creates two common edge cases around the transition moments:
- Ambiguous times — When clocks fall back, a local hour repeats (e.g., 01:30 may occur twice). You must disambiguate with an explicit UTC or a named zone plus an offset snapshot.
- Nonexistent times — When clocks spring forward, local times in the skipped hour never occur. Scheduling a job at that nonexistent local time will either move it or fail silently depending on your system.
How to handle ambiguous and nonexistent times
Always store the canonical UTC instant in logs. If you display local time to an operator, include both the local representation and the UTC instant. If you must schedule across DST boundaries, prefer a recurring rule anchored to a named zone handled by a calendar system (not manual offset math).
Practical three-region incident timeline (concrete example)
Example scenario: An alert triggers at 02:15 JST in Tokyo. A 1st responder in Tokyo starts triage, then hands off to Berlin (CEST) and later to Los Angeles (PDT).
Key sample conversions:
// Sample conversions for a specific instant (stringed examples, not running code)
Tokyo local: 2026-10-31T02:15:00 Asia/Tokyo (no DST in Tokyo)
UTC instant: 2026-10-30T17:15:00Z
Berlin local: 2026-10-30T19:15:00 Europe/Berlin (CEST or CET depends on DST date)
LA local: 2026-10-30T10:15:00 America/Los_Angeles (PDT or PST depends)
Note: depending on the date, Europe/Berlin and America/Los_Angeles may have different DST rules. Use a named zone converter to confirm the local offset for the incident date.
Reproducible incident notes template
Paste this small JSON-like block into your incident ticket so anyone in any time zone can reconstruct what happened.
{
"incident_id": "INC-2026-0421",
"event": "High error rate on /api/orders",
"utc_start": "2026-10-30T17:15:00Z",
"observed_by": {
"region": "Asia/Tokyo",
"local_start": "2026-10-31T02:15:00",
"timezone": "Asia/Tokyo"
},
"handoff_to": [
{ "region": "Europe/Berlin", "assigned_at": "2026-10-30T19:15:00+02:00", "timezone": "Europe/Berlin" },
{ "region": "America/Los_Angeles", "assigned_at": "2026-10-30T10:15:00-07:00", "timezone": "America/Los_Angeles" }
],
"log_samples": [
{ "ts_unix": 1767146100, "ts_iso": "2026-10-30T17:15:00Z", "message": "5xx errors spike" }
]
}
The fields you must include for reproducibility:
| Field | Why it matters | Example |
|---|---|---|
| utc_start | Canonical instant everyone can convert from | 2026-10-30T17:15:00Z |
| local_start + timezone | Gives local context and DST rules for the date | 2026-10-31T02:15:00, Asia/Tokyo |
| ts_unix | Raw epoch seconds for cross-system lookups | 1767146100 |
Scheduling meetings and calendar invites
When you create a meeting to review an incident, prefer:
- Invitees see the invite translated into their local time by the calendar; include the named time zone in the invite title and body (for example: “Postmortem — 2026-10-30T17:15Z / 18:15 CET / 10:15 PDT”).
- For cross-DST dates, include both the UTC anchor and an explanation like “Meeting set at 17:00 UTC (note: Berlin will be on CET after 2026-10-31).”
If you generate iCalendar entries manually, use TZID with the IANA name rather than hardcoding an offset:
BEGIN:VEVENT
DTSTART;TZID=Europe/Berlin:20261030T190000
SUMMARY:Incident review
END:VEVENT
Tools: quick conversions and what they can and cannot do
Fast conversions make a huge difference. Two quick utilities you can use from the web are:
- Time-Zone Converter — Converts between named time zones and shows offset/DST for a chosen date. Useful for checking whether Europe/Berlin was on CEST or CET on your incident date. It cannot replace a formal calendar or update tz rules retroactively if the IANA database changes after your lookup.
- Unix Timestamp Converter — Converts Unix epoch seconds to readable ISO timestamps and back. Useful for correlating log shards that store epoch seconds. It will not infer the IANA name for a server unless you supply it; it only converts the instant.
Both tools are handy for triage. They do not access your logs, and they don’t write into calendars; use them for conversions and paste the results into your incident notes.
Ordered incident handoff workflow
- Record the canonical UTC instant for the alert as soon as you confirm it (e.g.,
2026-10-30T17:15:00Z). - Capture the local reporter’s time, local timezone name, and whether DST was in effect.
- Grab log samples with raw epoch seconds and an ISO conversion.
- Notify the next region and provide the UTC instant, local times, and a short checklist of what has been done and remains to be done.
- During handoff, paste the reproducible note block into your ticket and ask the recipient to confirm they see the same instant in their local time.
- Close the loop: when the incident is resolved, record resolution timestamps the same way (UTC + local snapshot).
Checklist
- Did you record a UTC anchor? (Yes/No)
- Did you include the reporter’s timezone name (IANA)?
- Are sample log entries included with epoch and ISO formats?
- Did you confirm DST state for the incident date?
- Did you post the reproducible note into the incident ticket or chat thread?
Common mistakes
- Using short abbreviations like PST/CST without a date — they are ambiguous and may mean different offsets in different countries.
- Storing only local times in runbooks — makes automated correlation difficult.
- Assuming offsets never change — national legislatures can and do change DST rules.
- Scheduling follow-up jobs at a local time that does not exist on DST-forward days.
Limitations, privacy, and FAQ
Limitations you should be aware of:
- Timezone rules can change; always keep your systems’ tzdata up to date. Historical data may be accurate only to the version of the tz database installed at the time.
- Converters show instants and rules but do not substitute for official legal publications about time zone law.
- Publishing exact local timestamps and IP-based location information in public postmortems can have privacy implications for users — scrub or anonymize as appropriate.
FAQ
Q: Should we store times in UTC or local time?
A: Store canonical times in UTC in logs and databases. Present local times to humans alongside the UTC instant and the IANA zone name when context is needed.
Q: What is the minimal timestamp format for reproducibility?
A: ISO 8601 in UTC with a Z is sufficient as the canonical anchor (for example 2026-10-30T17:15:00Z). Add the local time and IANA zone for context.
Q: Can a timezone converter tell me whether a local time was ambiguous?
A: Good timezone converters will indicate DST transitions and whether a local time is ambiguous or nonexistent on a given date. Use the named-zone view for that. Time-Zone Converter can show these transitions; Unix Timestamp Converter will map epoch instants to ISO strings but won’t label ambiguous local representations without the zone context.
Sources
Editorial note: This guide is an educational overview. Confirm the output against the documentation and workflow that apply to your project.