我必须使用时区“ ET”(东部时间)。在Java中,没有ZoneId.of(“ ET”)。
我应该使用哪一个来正确表示“ ET”:
ZoneId TIMEZONE_ET = ZoneId.of("US/Eastern");
Run Code Online (Sandbox Code Playgroud)
要么
ZoneId TIMEZONE_ET = ZoneId.of("America/New_York");
Run Code Online (Sandbox Code Playgroud)
答案在tz 数据库时区列表中:US/Eastern 已弃用,只是指向 America/New_York 的链接。因此,为了确保未来的兼容性,您应该使用 America/New_York。
\n维基百科文章tz 数据库说(摘录):
\n\n\n时区具有“区域/位置”形式的唯一名称,例如\n“America/New_York”。\xe2\x80\xa6
\n区域是大陆、海洋或“等等”的名称。目前使用的大陆和海洋包括非洲、美洲、南极洲、北极、\n亚洲、大西洋、澳大利亚、欧洲、印度和太平洋。
\n位置是 \xe2\x80\x93 区域内特定位置的名称,通常是城市或小岛。
\n此方案中未使用国家/地区名称,主要是因为由于频繁的政治和边界变化,\n它们不稳固。\n大城市的名称往往更持久。\xe2\x80\xa6
\n
因此,US/Eastern 这个名称来自于按照其他规则创建名称的时代。
\n因为我在一些评论中感觉到了疑问:北美东部时间可能并且通常缩写为 ET。查看此信息的一种方法是在时区缩写 \xe2\x80\x93 全球列表中。您还可以看到,ET 可能由EST(东部标准时间)和 EDT(东部夏令时间)组成,或者用作 EST 的同义词,在西班牙语中也称为 Tiempo del Este。当您研究该列表时,您还会发现很多缩写词都是不明确的。
\n或者在 Java 中(使用 REPL):
\njshell> ZoneId.of("America/New_York").getDisplayName(TextStyle.SHORT, Locale.US) \n$3 ==> "ET"\nRun Code Online (Sandbox Code Playgroud)\n只是出于好奇,不推荐,因为存在歧义的风险:您也可以采用其他方式并ZoneId从缩写中获取:
jshell> var dtf = DateTimeFormatter.ofPattern("z", Locale.US);\ndtf ==> ZoneText(SHORT)\n\njshell> ZoneId.from(dtf.parse("ET"))\n$7 ==> America/New_York\nRun Code Online (Sandbox Code Playgroud)\n我重复一遍:不要在家里尝试最后一个技巧。
\n鉴于您的要求是使用“东部区域”,因此我将使用US/Eastern,但请注意:
America/New_York。tz回购文件中的该文件说,这些链接是将“旧”名称(例如US / Eastern)链接到当前名称。在这种情况下,“旧”很可能意味着“已弃用”。保罗·艾格特(Paul Eggert)是IANA时区列表的TZ协调员,因此这显然是规范的资料。鉴于此,您可能最好使用America/New_York,但是鉴于列出的更改是从1993年开始的,显然旧名称不会很快消失。
都将包含DST规则等。在我的系统上,例如:
var zoneRules = ZoneId.of("US/Eastern").getRules();
System.out.println(zoneRules.isDaylightSavings(Instant.parse("2019-07-01T12:00:00Z"))); // true
System.out.println(zoneRules.isDaylightSavings(Instant.parse("2019-01-01T12:00:00Z"))); // false
Run Code Online (Sandbox Code Playgroud)
请注意,7月1日中午是夏令时,而1月1日中午则不在夏令时。
更多:
在IANA时区数据库文件中,我发现:
to2050.tzs:
连结美国/纽约/美国/东部
...这表明这两个是别名(虽然它们ZoneId#equals不会返回true)。另外,northamerica它们具有:
#美国东部时间,以纽约为代表
并附有相关法律的注释。
因此,对我来说,目前看来,它们是同义词。显然,这US/Eastern是“旧名称”。当然,从理论上讲,纽约可以在某个时候决定不再属于东部时区(也许在时间上更接近英国和欧洲),但这似乎真的不太可能...
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |