为什么时区包含位置?

  • 本文关键字:位置 包含 时区 date
  • 更新时间 :
  • 英文 :


我正在做一个网站界面,我看到一个下拉菜单,上面写着"更改您的时区"。当我点击下拉列表时,我看到如下列表:

CST - America/Costa Rica (GMT -06:00)
CST - America/El Salvador (GMT -06:00)
CST - America/Guatamala (GMT -06:00)
etc...
EDT - America/New York (GMT -04:00)
EDT - America/Nipigon (GMT -04:00)
EDT - America/Toronto (GMT -04:00)
etc...

我隐约记得使用一些PHP库和Javascript日期库,除了指定时区外,还需要您指定America/TorontoAmerica/New York等位置。

我的问题是为什么在使用时区时需要America/TorontoAmerica/New York这样的位置?在同一时区会有多个政治管辖区显示不同的时间吗?

这是tzdb的命名方案。他们的解释:

数据库中的每个主表项表示自1970年以来一致的一组民用时钟的时区。时区通常由大陆或海洋确定,然后由时钟所在区域内最大城市的名称确定。例如,America/New_York代表美国东部时区的大部分;America/Phoenix代表亚利桑那州的大部分地区,使用山地时间,没有夏令时(DST);America/Detroit代表密歇根州的大部分地区,该州使用东部时间,但在1975年采用不同的夏令时规则;其他条目代表较小的地区,如印第安纳州的斯塔克县,1991年从中部时间切换到东部时间,2006年又切换回来。

维基百科有一些关于国家边界对应的讨论:

在此方案中不使用国家名称,主要是因为由于频繁的政治和边界变化,它们不会是健壮的。大城市的名字往往更持久。但是,数据库维护者试图为每个ISO 3166-1 alpha-2国家代码至少包含一个区域,数据库的许多用户界面都利用了这一点。此外,还希望保持位置在地理上的紧凑性,以便将来任何时区更改都不会将位置划分为不同的时区。

也有一些例外:北也门和南也门的前国家都被Asia/Aden覆盖,东德和西德都被Europe/Berlin覆盖。

他们当然可以跨越次国家边界。例如,美国犹他州、新墨西哥州、怀俄明州、蒙大拿州和科罗拉多州(以及其他一些州的部分地区)都被America/Denver覆盖。

至少有一件事是,一些地方有夏令时,根据一年中的时间改变UTC偏移量。

正确的时区是具有相同时间规则的区域区域。如果你想查看过去的日期,你会发现纽约和多伦多使用的是不同的时间。如果正确的话,时区是一个位置字符串。如果你还记得当你安装一台新电脑时,它会询问时区(大陆/城市),而不是时间偏移量。

然后是东部(标准)时间(EST)。这只是相对于GMT/UTC的偏移量。美国的一些州可能会改变时间(从一个到另一个,例如在边界地带)。一些州/国家可能会选择不使用EDT(日光)。但你要保持状态。出于这个原因,最好使用这样的符号:"time zone"; geographic ";time offset"当时与格林尼治标准时间的时间差。(这种情况可能会因为白昼时间而改变,但也可能因为政治原因)。通常我们使用"时间偏移";对于较大的地理实体,因为比较时间更容易(现在而不是历史或未来的时间)。

不过如此。时间偏移量有很好的定义(不是真的:相同的字母可能用于不同的时间,通常在不同的大陆)。时区需要一个数据库,它应该定期更新:规则变化。

相关内容

  • 没有找到相关文章