澳大利亚时区

作者:Paul King
发布时间:2023-02-20 08:00PM


Ken Kousen 发布了另一篇 来自 jar 侧的故事 集,涵盖了南极洲的时区等内容。

Research stations and timezones in Antarctica

在更广泛地讨论澳大利亚时区之前,让我们在 Groovy 中复制他的示例。为什么是澳大利亚?因为这是我的祖国,而且 Ken 的文章中提到了一个我们将要讨论的事实。首先,以下是 Ken 在南极的探索的等效代码

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>

我不想透露 Ken 的关键点,但南极,特别是阿蒙森-斯科特站,目前正处于夏令时。如果你想知道这为什么可能很奇怪,请阅读 他的文章 或参加 Ken 的演讲!

说到奇怪,Ken 还提到了另一个与澳大利亚时区相关的奇怪事实。澳大利亚有一个名为 Eucla 的时区,它的时差为 45 分钟。而且这还不是唯一有趣的事实!

让我们看看所有澳大利亚时区,包括 Eucla,以及三个南极研究站:凯西、戴维斯和莫森(如上图右侧所示)。

在我们深入代码之前,让我们看看我们感兴趣的时区

缩写 时区名称 偏移量 使用地点

ACDT

澳大利亚中部夏令时

UTC +10:30

夏季:南澳大利亚州,新南威尔士州的布罗肯希尔/扬科温纳县

ACST

澳大利亚中部标准时间

UTC +9:30

冬季:南澳大利亚州,新南威尔士州的布罗肯希尔/扬科温纳县
全年:北领地

ACT

澳大利亚中部时间

通常用作在 ACDT/ACST 之间切换的地方的缩写

ACWST

澳大利亚中西部标准时间

UTC +8:45

Eucla

AEDT

澳大利亚东部夏令时

UTC +11

夏季:澳大利亚首都领地,新南威尔士州(除布罗肯希尔/扬科温纳县外),塔斯马尼亚州,维多利亚州
全年:麦夸里岛

AEST

澳大利亚东部标准时间

UTC +10

冬季:澳大利亚首都领地,新南威尔士州(除布罗肯希尔/扬科温纳县外),塔斯马尼亚州,维多利亚州
全年:昆士兰州,珊瑚海岛

AET

澳大利亚东部时间

通常用作 AEDT 或 AEST 中任何地方(或在其之间切换)的缩写

AWDT

澳大利亚西部夏令时

UTC +9

目前未使用

AWST

澳大利亚西部标准时间

UTC +8

西澳大利亚州,阿什莫尔和卡地亚群岛

CCT

科科斯群岛时间

UTC +6:30

科科斯(基林)群岛

CXT

圣诞岛时间

UTC +7

圣诞岛

LHDT

豪勋爵岛夏令时

UTC +11

夏季:豪勋爵岛

LHST

豪勋爵岛标准时间

UTC +10:30

冬季:豪勋爵岛

NFDT

诺福克岛夏令时

UTC +12

夏季:诺福克岛

NFT

诺福克岛时间

UTC +11

冬季:诺福克岛

TFT

法属南部和南极领地时间

UTC +5

赫德岛和麦克唐纳岛

CAST

凯西时间

冬季:UTC +8
夏季:UTC +11

凯西南极站

DAVT

戴维斯时间

UTC +7

戴维斯南极站

MAWT

莫森时间

UTC +5

莫森南极站

你可能会注意到,时区真的不少!其次,大多数国家都有整数值的时区偏移量,但你应该注意到澳大利亚还有几个 30 分钟的偏移量。Ken 提到了 45 分钟的偏移量更加罕见(世界上只有 3 个)。让我们看看澳大利亚对这个专属俱乐部的贡献

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

这导致了以下结果

+08:45

为什么会有如此奇怪的偏移量?好吧,Eucla 位于 Nullarbor 平原上,位于珀斯和阿德莱德之间,靠近州界。它曾经是电报站的所在地,据 传闻,为了最大限度地减少并排整理电报的西澳和南澳工人的混淆,他们将时区设置为各自州时区的正中间。西澳和南澳(不包括夏令时)相差 1 小时 30 分钟,因此中间位置的时差为 45 分钟!

Perth to Adelaide via Eucla

顺便说一句,如果你想看看世界上最长的直线铁路(478 公里,297 英里),或者澳大利亚最长的直线沥青路(146 公里,91 英里),那么 Nullarbor 平原就是你要去的地方,但除此之外,它不在大多数人的必游景点清单上。

Nullarbor plain

但如果你想了解另一个鲜为人知的时区事实,那么 Nullarbor 平原就是你要去的地方!当印度太平洋列车在西澳大利亚州的卡尔古利和南澳大利亚州的奥古斯塔港之间行驶时,它有自己的时间,被称为 "列车时间"(UTC+09:00)。在我们接下来的探索中,我们不会遵循这个非官方的时区,但如果我们要包含它,它将是我们列表中的另一个时区!

Indian pacific train

一些其他鲜为人知的时区事实与澳大利亚的一些小岛屿有关。

一个有趣的时区事实适用于 豪勋爵岛。豪勋爵岛距离新南威尔士州北海岸 600 多公里(380 英里)。这大约是去新西兰的四分之一距离!由于它位于大陆的东部,所以它有一个比大陆早 30 分钟的时区,这一点并不奇怪。

Lord Howe Island

显然,几年前,总督希望有一个与大陆时间一致的时区,至少在一年中的部分时间里,因此他们举行了一次公投,并投票决定在夏季采用 30 分钟的夏令时。

让我们检查一下这种现象

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

另一个岛屿时区异常适用于赫伦岛,该岛位于昆士兰州格拉德斯通海岸外 72 公里(45 英里)。它有两个时区:岛上度假村全年采用夏令时,而岛上的海洋研究中心和公园和野生动物办公室则保持东部标准时间。

最后,让我们收集所有适用于澳大利亚的不同偏移量

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
}

让我们检查一下,澳大利亚领土需要处理 10 种不同的偏移量,其中 4 种是非典型的非整点偏移量。然后,我们将打印出这些偏移量。

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

两个断言都通过了,最终的 println 输出如下

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

最后,再谈一个时区奇闻。

昆士兰州和新南威尔士州的边界实际上将黄金海岸机场精确地分成两半,包括跑道。从技术上讲,在夏季月份出发的航班从一个时区的航站楼出发,并在另一个时区起飞。这有可能严重影响航空公司的按时起飞统计数据!幸运的是,机场选择只使用昆士兰州时间来避免任何潜在的混淆。

Fireworks on the Gold Coast

顺便说一句,如果你喜欢庆祝新年,黄金海岸可能是你的完美目的地。你可以在特威德角狂欢并观看烟火表演,然后向北走 10 米,再过 1 个小时,就可以再次倒数迎接午夜。