Timezones with Half-Hour and 45-Minute Offsets

Comprehensive reference for timezones that use non-standard offsets: 30-minute and 45-minute offsets from UTC. Includes practical implications for software developers.

Edge Cases

Detailed Explanation

Non-Standard Timezone Offsets

While most people assume timezones come in whole-hour increments, a significant number of regions use 30-minute or even 45-minute offsets from UTC.

30-Minute Offset Timezones

IANA ID Common Name UTC Offset DST?
Asia/Kolkata India Standard Time +05:30 No
Asia/Colombo Sri Lanka Time +05:30 No
Asia/Kabul Afghanistan Time +04:30 No
Asia/Tehran Iran Time +03:30 Yes (+04:30)
Asia/Yangon Myanmar Time +06:30 No
Australia/Adelaide Australian Central +09:30 Yes (+10:30)
Australia/Darwin Australian Central +09:30 No
Australia/Broken_Hill Australian Central +09:30 Yes (+10:30)
America/St_Johns Newfoundland -03:30 Yes (-02:30)
Indian/Cocos Cocos Islands +06:30 No
Pacific/Marquesas Marquesas Islands -09:30 No

45-Minute Offset Timezones

IANA ID Common Name UTC Offset DST?
Asia/Kathmandu Nepal Time +05:45 No
Pacific/Chatham Chatham Island Time +12:45 Yes (+13:45)

Why These Offsets Exist

Most non-standard offsets have historical or political reasons:

  • India (+05:30): Compromise between Kolkata (+05:53 solar time) and Mumbai (+04:51 solar time) when standardized in 1906
  • Nepal (+05:45): Originally +05:40 (based on Kathmandu's solar time), rounded to +05:45 in 1986 to differentiate from India
  • Iran (+03:30): Based on Tehran's solar noon (approximately +03:26)
  • Newfoundland (-03:30): Based on St. John's solar time, adopted in 1935
  • Chatham Islands (+12:45): Originally +12:15 based on solar time, changed to +12:45 in 1957

Impact on Software

1. Duration Calculations:

// Converting from UTC to Kathmandu
// 14:00 UTC → 19:45 NPT  (not 20:00!)
const d = new Date("2024-03-15T14:00:00Z");
console.log(d.toLocaleString("en-US", { timeZone: "Asia/Kathmandu" }));

2. Offset Arithmetic:

// The difference between India and Nepal
// +05:30 and +05:45 = 15 minutes difference
// Mumbai 10:00 AM = Kathmandu 10:15 AM

3. Cron Job Alignment: If you need a job to run at midnight in Kathmandu:

15 18 * * *   # 18:15 UTC = 00:00 NPT

4. Database Queries: When grouping by date in non-standard offset timezones, the date boundary falls at an unusual UTC time (e.g., 18:15 UTC for Nepal).

Testing Recommendations

Always include at least one half-hour offset timezone in your test suite:

const testTimezones = [
  "America/New_York",     // Standard (whole hour)
  "Asia/Kolkata",         // +05:30 (half hour)
  "Asia/Kathmandu",       // +05:45 (45 minutes)
  "Pacific/Chatham",      // +12:45 with DST
  "America/St_Johns",     // -03:30 with DST
];

Use Case

Non-standard timezone offsets affect any software that assumes whole-hour offsets in its date/time calculations. This includes billing systems that calculate pro-rated charges, analytics platforms that group data by date, scheduling applications that need precise alignment, and international communication tools. India alone has over 1.4 billion people in a +05:30 timezone, making this far from an edge case.

Try It — Timezone Reference

Open full tool