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.