Australian Time Zones

Author: Paul King
Published: 2023-02-20 08:00PM


Ken Kousen posted another Tales from the jar side episode covering among other things, time zones in Antarctica.

Research stations and timezones in Antarctica

Let’s replicate his example in Groovy before looking at time zones more broadly in Australia. Why Australia? Well, that’s where I’m from but also there’s a reference in Ken’s article to one of the facts we’ll look at. First, here is the equivalent of Ken’s exploration at the South Pole:

Groovy Shell (4.0.9, JVM: 17.0.2)
Type ':help' or ':h' for help.
-------------------------------------------------------------------------------
groovy:000> import java.time.*
===> java.time.*
groovy:000> southPole = ZoneId.of('Antarctica/South_Pole')
===> Antarctica/South_Pole
groovy:000> dst = southPole.rules.isDaylightSavings(Instant.now())
===> true
groovy:000> "The South Pole ${dst ? 'IS' : 'IS NOT'} currently on DST"
===> The South Pole IS currently on DST
groovy:000>

Without wanting to give away Ken’s punch line, the South Pole, in particular, the Amundsen-Scott station, is currently on daylight saving time. Read his article or attend one of Ken’s talks if you wonder why that might be strange!

Speaking of strange, Ken also mentioned another strange fact related to Australian timezones. Australia has a zone, Eucla, with a 45-minute offset. And that’s not the only interesting fact!

Let’s look at all Australian timezones, including Eucla, and the three Antarctic research stations, Casey, Davis, and Mawson (seen on the right of the above map).

Before we dive into coding, let’s look at the timezones we’re interested in:

Abbreviation Time zone name Offset Where used

ACDT

Australian Central Daylight Time

UTC +10:30

Summer: South Australia, Broken Hill/Yancowinna County in New South Wales

ACST

Australian Central Standard Time

UTC +9:30

Winter: South Australia, Broken Hill/Yancowinna County in New South Wales
All year: Northern Territory

ACT

Australian Central Time

Often used as an abbreviation for places which switch between ACDT/ACST

ACWST

Australian Central Western Standard Time

UTC +8:45

Eucla

AEDT

Australian Eastern Daylight Time

UTC +11

Summer: Australian Capital Territory, New South Wales except Broken Hill/Yancowinna County in New South Wales, Tasmania, Victoria
All year: Macquarie Island

AEST

Australian Eastern Standard Time

UTC +10

Winter: Australian Capital Territory, New South Wales except Broken Hill/Yancowinna County in New South Wales, Tasmania, Victoria
All year: Queensland, Coral Sea Islands

AET

Australian Eastern Time

Often used as an abbreviation for places in either AEDT or AEST (or switching between them)

AWDT

Australian Western Daylight Time

UTC +9

Not currently in use

AWST

Australian Western Standard Time

UTC +8

Western Australia, Ashmore and Cartier Islands

CCT

Cocos Islands Time

UTC +6:30

Cocos (Keeling) Islands

CXT

Christmas Island Time

UTC +7

Christmas Island

LHDT

Lord Howe Daylight Time

UTC +11

Summer: Lord Howe Island

LHST

Lord Howe Standard Time

UTC +10:30

Winter: Lord Howe Island

NFDT

Norfolk Daylight Time

UTC +12

Summer: Norfolk Island

NFT

Norfolk Time

UTC +11

Winter: Norfolk Island

TFT

French Southern and Antarctic Time

UTC +5

Heard and McDonald Islands

CAST

Casey Time

Winter: UTC +8
Summer: UTC +11

Casey Antarctic Station

DAVT

Davis Time

UTC +7

Davis Antarctic Station

MAWT

Mawson Time

UTC +5

Mawson Antarctic Station

The first thing you might notice, is that’s quite a few time zones! Secondly, most countries have whole number zone offsets, but you should notice that Australia has several 30-minute offsets too. Ken mentioned that 45-minute offsets are even rarer (3 in the world). Let’s look at Australia’s contribution to that exclusive club:

var eucla = ZoneId.of('Australia/Eucla')
println eucla.rules.getStandardOffset(now)

This has the following result:

+08:45

Why such a strange offset? Well, Eucla sits on the Nullarbor plain, about halfway between Perth and Adelaide, and close to the state border. It was once home to a telegram station and the story goes that to minimise confusion between the West Australian and South Australian workers who sat side-by-side sorting telegrams, they set the time zone to exactly halfway between their respective state timezones. Western Australia and South Australia are (excluding daylight saving) an hour and 30 minutes apart, so halfway between results in the 45-minute offset!

Perth to Adelaide via Eucla

Incidentally, if you want to see the longest straight section of railway in the world (478 km, 297 mi), or the longest straight section of tarred road in Australia (146 km, 91 mi), then the Nullarbor plain is the place to be, but otherwise it’s not high on most folks tourist attractions must-see list.

Nullarbor plain

But the Nullarbor is the place to be if you want to know about another obscure timezone fact! When the Indian Pacific train travels between Kalgoorlie, Western Australia and Port Augusta, South Australia, it has its own time known as "Train Time" (UTC+09:00). We won’t follow this unofficial timezone in our later exploration, but it would add another to our list if we wanted to include it too!

Indian pacific train

A few other obscure timezone facts relate to some of Australia’s smaller islands.

One interesting timezone fact applies to Lord Howe Island. Lord Howe Island is a little over 600 km (380mi) out from the north coast of New South Wales. That’s about 1/4 of the way to New Zealand! Being that far East of the mainland, it’s not surprising to find out that it has a timezone 30 minutes earlier than the mainland.

Lord Howe Island

Apparently, some years back, the governor wanted to have a timezone coinciding with the mainland, for at least part of the year, so they held a referendum and voted in a 30-minute daylight saving time during Summer.

Let’s check this phenomenon:

var lordHowe = ZoneId.of('Australia/Lord_Howe')
assert lordHowe.rules.getDaylightSavings(now).toMinutes() == 30

Another Island timezone anomaly applies to Heron Island, 72 km (45 mi) off the coast of Gladstone in Queensland. It has two time zones: the island resort follows daylight saving time all year round, whereas the Marine Research Centre and the Parks and Wildlife office on the island remain on Eastern Standard Time.

Finally, let’s collect all the different offsets applicable to Australia:

var ids = ['Australia/Tasmania', 'Antarctica/Davis',
   'Australia/ACT', 'Australia/Eucla', 'Australia/North', 'Australia/Yancowinna',
   'Australia/Victoria', 'Australia/Adelaide', 'Antarctica/Mawson', 'Antarctica/Casey',
   'Australia/Queensland', 'Australia/Lord_Howe', 'Australia/NSW', 'Australia/South',
   'Australia/West', 'Indian/Christmas', 'Indian/Cocos', 'Pacific/Norfolk']
Set offsets = []
for (id in ids) {
    var rules = ZoneId.of(id).rules
    offsets << rules.getStandardOffset(now) // non daylight saving offset
    offsets << rules.getOffset(now)         // daylight saving offset when run in Summer
}

Let’s check that there are 10 different offsets we need to deal with in Australian territories, with 4 being the less usual not-on-the-hour offsets. Then, we’ll print out the offsets.

assert offsets.size() == 10
assert offsets*.toString().count{ !it.endsWith(':00')} == 4
println offsets

The two assertions pass and the final println has the following output:

[+10:00, +11:00, +07:00, +08:45, +09:30, +10:30, +05:00, +08:00, +06:30, +12:00]

Just one final timezone obscurity to wrap up.

The Queensland-New South Wales border actually cuts Gold Coast Airport almost precisely in half, including the runway. Technically, flights departing in the summer months leave the terminal in one time zone and take off from the ground in another. This has the potential to severely muck up the airlines departed-on-time statistics! Thankfully the airport chooses to operate exclusively on Queensland time to avoid any potential confusion.

Fireworks on the Gold Coast

Incidentally, if you love to celebrate New Year’s Eve, Gold Coast might be the perfect destination. You can party and watch fireworks in Tweed Heads before heading just 10s of metres North to count down to midnight all over again, just one hour later.