utc是世界标准时间啥的英文缩写?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了utc是世界标准时间啥的英文缩写?相关的知识,希望对你有一定的参考价值。
UTC(世界标准时间)/GMT(格林威治时间)/CST(北京时间)。
常见的时间系统包括三种,分别是:
以地球自转周期为基准的世界时(Universal Time,UT)
以地球绕太阳公转周期为基准的历书时(Ephemeris Time,ET)
以物质内部原子(例如铯原子)发射的电磁振荡频率为基准的原子时(Atomic time,AT)
应用
这套时间系统被应用于许多互联网和万维网的标准中,例如,网络时间协议就是协调世界时在互联网中使用的一种方式。
在军事中,协调世界时区会使用“Z”来表示。又由于Z在无线电联络中使用“Zulu”作代称,协调世界时也会被称为"Zulu time"。
中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。
参考技术A Universal Time Coordinated,国际电信联盟希望协调世界时能够在所有语言有单一的缩写。英语和法语区的人同时希望各自的语言缩写(英文“Coordinated Universal Time”缩写为“CUT”,法文“Temps Universel Cordonné”缩写则为“TUC”)能够成为国际标准。结果最后妥协使用UTC(Universal Time Coordinated)。 参考技术B 协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。中国大陆采用ISO 8601-1988的《数据元和交换格式信息交换日期和时间表示法》(GB/T 7408-1994)称之为国际协调时间。什么是“标准”时区缩写?
【中文标题】什么是“标准”时区缩写?【英文标题】:What are the "standard" timezone abbreviations? 【发布时间】:2013-08-26 15:34:04 【问题描述】:我通过offset-from-UTC 为使用此下拉列表的应用程序存储时区:
<select id="timezone" name="timezone" >
<option value="-12">[UTC - 12] Baker Island Time</option>
<option value="-11">[UTC - 11] Niue Time, Samoa Standard Time</option>
<option value="-10">[UTC - 10] Hawaii-Aleutian Standard Time, Cook Island Time</option>
<option value="-9.5">[UTC - 9:30] Marquesas Islands Time</option>
<option value="-9">[UTC - 9] Alaska Standard Time, Gambier Island Time</option>
<option value="-8">[UTC - 8] Pacific Standard Time</option>
<option value="-7">[UTC - 7] Mountain Standard Time</option>
<option value="-6">[UTC - 6] Central Standard Time</option>
<option value="-5">[UTC - 5] Eastern Standard Time</option>
<option value="-4.5">[UTC - 4:30] Venezuelan Standard Time</option>
<option value="-4">[UTC - 4] Atlantic Standard Time</option>
<option value="-3.5">[UTC - 3:30] Newfoundland Standard Time</option>
<option value="-3">[UTC - 3] Amazon Standard Time, Central Greenland Time</option>
<option value="-2">[UTC - 2] Fernando de Noronha Time, South Georgia & the South Sandwich Islands Time</option>
<option value="-1">[UTC - 1] Azores Standard Time, Cape Verde Time, Eastern Greenland Time</option>
<option value="0">[UTC] Western European Time, Greenwich Mean Time</option>
<option value="1">[UTC + 1] Central European Time, West African Time</option>
<option value="2">[UTC + 2] Eastern European Time, Central African Time</option>
<option value="3">[UTC + 3] Moscow Standard Time, Eastern African Time</option>
<option value="3.5">[UTC + 3:30] Iran Standard Time</option>
<option value="4">[UTC + 4] Gulf Standard Time, Samara Standard Time</option>
<option value="4.5">[UTC + 4:30] Afghanistan Time</option>
<option value="5">[UTC + 5] Pakistan Standard Time, Yekaterinburg Standard Time</option>
<option value="5.5">[UTC + 5:30] Indian Standard Time, Sri Lanka Time</option>
<option value="5.75">[UTC + 5:45] Nepal Time</option>
<option value="6">[UTC + 6] Bangladesh Time, Bhutan Time, Novosibirsk Standard Time</option>
<option value="6.5">[UTC + 6:30] Cocos Islands Time, Myanmar Time</option>
<option value="7">[UTC + 7] Indochina Time, Krasnoyarsk Standard Time</option>
<option value="8">[UTC + 8] Chinese Standard Time, Australian Western Standard Time, Irkutsk Standard Time</option>
<option value="8.75">[UTC + 8:45] Southeastern Western Australia Standard Time</option>
<option value="9">[UTC + 9] Japan Standard Time, Korea Standard Time, Chita Standard Time</option>
<option value="9.5">[UTC + 9:30] Australian Central Standard Time</option>
<option value="10">[UTC + 10] Australian Eastern Standard Time, Vladivostok Standard Time</option>
<option value="10.5">[UTC + 10:30] Lord Howe Standard Time</option>
<option value="11">[UTC + 11] Solomon Island Time, Magadan Standard Time</option>
<option value="11.5">[UTC + 11:30] Norfolk Island Time</option>
<option value="12">[UTC + 12] New Zealand Time, Fiji Time, Kamchatka Standard Time</option>
<option value="12.75">[UTC + 12:45] Chatham Islands Time</option>
<option value="13">[UTC + 13] Tonga Time, Phoenix Islands Time</option>
<option value="14">[UTC + 14] Line Island Time</option>
使用 PHP,我真的没有最简单的选项将它们转换为时区缩写,我唯一的选择是通过编程方式对大约 400 个时区缩写的列表进行排序。有谁知道每个时区的下拉列表以及夏令时时区的列表? (我假设我需要手动定义这两个列表)
编辑:将此列表解析为每个时区的一个缩写,但它们不是“流行”的。
我的新列表
[-12] => kwat
[-11] => bst
[-10] => ahst
[-9.5] => ckhst
[-9] => ahdt
[-8] => akdt
[-7] => east
[-6] => cst
[-5] => act
[-4.5] => ant
[-4] => acst
[-3.5] => negt
[-3] => adt
[-2] => addt
[-1] => azost
[-0] => azomt
[1] => bst
[2] => bdst
[3] => amt
[3.5] => irst
[4] => adt
[4.5] => aft
[5] => aktt
[5.5] => ist
[5.75] => npt
[6] => aktst
[6.5] => burt
[7] => almst
[8] => bnt
[8.75] => cwst
[9] => cdt
[9.5] => cast
[10] => chost
[10.5] => cst
[11] => anat
[11.5] => lhst
[12] => anast
[12.75] => chast
[13] => anast
[14] => anast
代码:
$abbr = DateTimeZone::listAbbreviations();
$offsets=array('-12','-11','-10','-9.5','-9','-8','-7','-6',
'-5','-4.5','-4','-3.5','-3','-2','-1','-0','1','2','3','3.5',
'4','4.5','5','5.5','5.75','6','6.5','7','8','8.75','9','9.5',
'10','10.5','11','11.5','12','12.75','13','14');
$new = array();
$count = 0;
$found = false;
while($count < count($offsets))
foreach($abbr as $k => $v)
foreach($v as $tz)
if($tz['offset'] == $offsets[$count]*3600)
$new[$offsets[$count]] = $k;
$found = true;
break;
if($found)
$found = false;
break;
$count++;
print_r($new);
【问题讨论】:
看看DateTimeZone::listAbbreviations。您想要的信息可能就在那里,或者在其中一种相关方法中。 这是我无法解析每个页面加载的 400 个缩写的列表。我只需要这 24 个,我假设在某个地方有一个我无法找到的通用列表。这个特殊的下拉菜单甚至很难找到,其他的都不是很好。 :// 您可以通过编程方式构建您的列表并将其存储在服务器文件系统中。当你需要它时,检查它的年龄,如果它超过了 24 小时,则重新构建它。然后以正常方式包含/要求它。这不是您要求的列表,但这意味着您每天只解析整个列表一次。 我能够解析列表,但是我没有收到流行的缩写,只是第一个恰好匹配。请注意,对于美国的 4 个主要时区,我没有得到 PST、MST、CST、EST,而是完全不同的东西。编辑:更新主帖,因为代码不适合。 按偏移量存储时区是错误的。使用 Mike W 链接到的列表中给出的名称存储它。然后您可以使用DateTimeZone 访问它。这样您就可以避免 DST 等问题。无论如何,有一个缩写列表 here 可能对您有用。 【参考方案1】:什么是“标准”时区缩写?
对此没有标准。时区缩写未由任何人正式协调。 IANA TZDB 中使用了一些,但其中很多只是随机选择的。关于应该使用哪些缩写词经常存在争议。例如,看看有多少关于澳大利亚缩写 in the list archives for April 2013 的帖子。
可以在here 找到另一个时区缩写列表。如果你仔细观察,你会发现很多都是模棱两可的。例如,CST
可以是“中部标准时间”(美国)、“中国标准时间”或“古巴标准时间”。 EST
可以是“东部标准时间”(美国)或“东部标准时间”(澳大利亚)。
一些非澳大利亚人可能更喜欢AEST
,但谁说A
应该是澳大利亚而不是美国?
另一个非常常见的例子,有些人使用HAST
表示夏威夷,而另一些人则使用HST
,因为他们不太关心阿拉斯加的阿留申群岛(A
应该代表的意思)。
关键是,任何时区缩写列表,无论您在哪里找到,都是主观的和固执的。没有标准。
我正在使用此下拉列表为应用程序按偏移量存储时区:
请不要那样做。时区不是一个偏移量,而且有很多超过 24 个。请阅读the timezone tag wiki,尤其是标题为“时区!=偏移”的部分。
来自您的 cmets:
我现在意识到了这一点,但是我的应用程序逻辑的其余部分已经以这种方式依赖它了,我今天才完成它,所以没有时间改变它。
那么您的应用程序中将继续存在许多错误。你不能可靠地做到这一点——即使你的应用程序只是在美国运行。不管你使用什么语言或平台,任何实现都会有很多转换错误。
我可以对这些数组进行硬编码,我只是不知道美国以外的热门区域是什么,我认为这样的列表已经存在于某个地方。
当涉及到时区时,您不应该对任何内容进行硬编码。时区规则一直在变化,因为它们受到世界各国政客的控制。 IANA time zone database 每年都会发布多次更新。在 PHP 方面,PHP documentation 明确了当前可用的版本,并且更新通过 PECL's timezonedb 处理 - 它从 IANA 提取数据。
关于什么是“流行” - 这也是非常主观的。出于某种原因,TZDB 中的所有区域都在那里。我所知道的唯一试图限制这一点的地方是来自 Ruby on Rails 的ActiveSupport::TimeZone。他们声称拥有“146 个区域的有意义子集”,您可以在该页面上的 MAPPING
常量中看到。但是他们没有说他们通过什么过程决定了什么是有意义的,并且有明显的遗漏。除非您知道每个用户的位置,否则我不会尝试决定限制在哪些区域。
如果您想要的不是 TZDB 中所有 578 个区域的下拉列表,您可以尝试以下方法之一:
提供两个下拉菜单。第一个选择国家。第二个选择该国家/地区的区域。在PHP中可以看到,当你调用DateTimeZone::listIdentifiers
时,它接受一个可选的$country
参数来过滤列表。
Google 日历的设置就是一个很好的例子:
使用基于地图的控件,以便您的用户可以按位置选择他们的时区。其中有很多,但我最喜欢的是用于 JavaScript 的 this one。
例如,它可能看起来像这样:
请注意,虽然它在此处显示 TZDB 缩写 EDT
- 这只是为了方便显示。在后台,您正在选择像 America/New_York
这样的值。
最终,您需要为每个用户保存他们的 IANA 时区密钥,例如 America/New_York
。您无法仅使用 -5
的值进行正确的时区转换,因为您不知道何时切换到 -4
的所有规则。
更新
我没有从您的原始帖子中意识到,但您在 cmets 中澄清的一件事是您正在使用它来选择目标事件时区。我想我应该先询问上下文。我是从为您的用户选择单个时区的角度来解决这个问题的,而不是为特定事件选择特定时区。
你真正需要一个事件在正确的时刻是那个时刻的偏移量。因此,您可以使用您在问题中显示的下拉菜单 - 但我会省略任何区域名称。它实际上是从UTC-12:00
到UTC+14:00
的偏移量列表。看起来您已经确定还存在一些 30 分钟和 45 分钟的偏移量。如果您愿意,可以验证您的假设here。
不过,普遍的问题是很多人不知道偏移量应该是多少。通过为每个区域名称放置一个带有 standard 偏移量的列表,您可能会误导用户选择错误的偏移量。例如,他们可能在谈论应该属于美国东部夏令时间 (-4) 的夏季日期,但他们选择了 -5 选项,因为他们看到“东部”。因此,删除名称会有所帮助。
如果您按照我最初建议的方式让他们选择一个实际的 IANA 时区,那么在许多情况下效果会更好。但是,您仍然需要考虑一种情况 - 如何处理 ambiguous 和 invalid 次。这些发生在 DST 转换期间。
例如,我可能会选择 America/New_York
,并选择 2013 年 11 月 3 日凌晨 1:00 的时间。由于后备转换,有两种不同的情况(一种在 EDT 中为 -4,另一种在 EDT在美国东部标准时间 -5)。因此,您的应用程序需要检查这一点并询问用户他们指的是哪两个。同样,如果我在 2013 年 3 月 10 日凌晨 2:00 输入,您的应用应该会告诉我该时间不存在于该区域中(由于 spring-forward 过渡)。
无论采用哪种方法,在实际存储事件时间时,请确保存储日期-时间-偏移量组合,或者应用偏移量以获取 UTC 的日期时间。您不希望对事件所代表的实际时间点有任何疑问。
【讨论】:
哇,很好的答案。你赢了,我会解决整个事情的,哈哈。令人失望的是,因为我的倒数计时器等在我的所有测试中都运行良好(至少在美国境内)。我现在只需要在时间旁边显示 ABBR。我想这是一个更好的方法。我正在做的就像现场活动,所以一个用户可以有几个,它不像一个用户选择他们自己的时区一次,就是这样,它可能是几次,他们可以在其他国家举办几个活动。知道所以我想保持简单。 Country + Timezone 选择应该很好用。谢谢! 另外,根据你的最后一段,我通过让 javascript 向用户显示他们当前所在的时区来解决这个问题,因此即使 -5 是正确的,他们也可以为 EDT (UTC) 选择 -4该区域的 GMT 代码。有点hacky,但它适用于在不久的将来发生的事件,然后才改变。 GMT/UTC 与此目的相同。不是 -5 是正确的,它恰好是“标准”或“基本”偏移量。即使那个谷歌日历示例只显示标准偏移量 - 不是当前偏移量,或者(在您的情况下)适用于事件时间的偏移量,也会出错。另请参阅我的更新答案。 如果您需要附加名称,我会将其设置为实际区域名称,如America/New_York
,或通用名称,如Eastern Time
。但是你还必须处理我描述的模棱两可/无效的场景。如果您需要使用官方名称来源,请查看CLDR 中的“metazones”。
很棒的答案!应该交叉发布到 UX.SE 如何选择时区。以上是关于utc是世界标准时间啥的英文缩写?的主要内容,如果未能解决你的问题,请参考以下文章