在PHP中,您可以使用简单的代码行更改时区
date_default_timezone_set('Europe/London');我遇到的问题是制作一个基于用户的时区变更器。我希望让用户使用带有时区选项的放置框,并使用MySQL将其保存在用户的数据变量上。我的问题与PHP如何处理时区有关,特别是每个变量的名称。时区的名称如下所示,这让人感到很困惑。
这不是唯一的问题,有这么多的不同时区名称达到数百个。我不知道要用的那几百个,因为我显然不能全部使用,因为这样做有点多余,效率也不高。我会使用像GMT+5 or GMT-1这样的时区,但是PHP手册说我不应该使用它们,而且据我所读到,它们不支持DST。我想知道我应该怎么做才能得到一个好的时区清单,这对我的目的是有好处的。或者,如果有人够好的话,他们可以把我转到一个我可以用的名单上。
我正在寻找任何名单,可以涵盖大多数时区。
TL;博士我需要帮助找出用于时区拖放框的时区。
发布于 2013-12-04 13:01:57
如果您为每个用户存储一个时区字符串(例如“欧洲/伦敦”),则可以将传入时间转换为UTC,然后在显示时重新转换它们。一旦你弄明白了,那就很容易了:
$previoustz = date_default_timezone_get();
@date_default_timezone_set( $users_chosen_timezone );
/* do your time processing here */
@date_default_timezone_set( $previoustz );你必须遵守纪律,否则你的系统会出现一些错误的错误。
至于提供哪些时区的问题,我强烈建议您提供PHP提供的整个列表。您只需从用户配置文件屏幕中收集用户的时区设置,就不会经常使用长下拉列表困扰用户。
你需要它们都有几个原因。一种是美国时区的普遍怪异现象,在那里,一些地方司法机构在夏令时做了一些奇怪的事情。看看美国/印第安纳州。这是立法机关曾经颁布的π值为3的州,你想弄清楚这一切吗?我不这么认为。
第二个原因是:一些司法管辖区在难以自动化的日期上,从夏令储蓄中来回切换。例如,以色列国根据希伯来日历进行切换。您希望用户只需选择他们的时区。
另一个原因是:使用WordPress这样的全局系统的人已经开始期待标准的选择集,它基于一个名为timezoneinfo的受人尊敬的Unix / Linux系统。如果你只是按照标准行事,你可以让时间信息的人来处理你应该提供的选择。这是一个国际性的政治问题,而timezoneinfo为你解决这个问题比你希望的要好得多。
通过查看http://www.php.net/manual/en/datetimezone.listidentifiers.php获取列表的方法。
发布于 2013-12-04 14:03:11
您应该理解PHP时区是IANA标准时区。它们并不是PHP的专利,用户可能已经习惯于看到它们(可能)。
如果您想限制选择,请考虑使用两个下拉列表,第一个是选择国家,第二个是选择国家内的时区。PHP有此功能,数据来自原始数据集中的zone.tab。
另一种方法是使用基于地图的时区选择器控件,例如这个用于javascript。
https://stackoverflow.com/questions/20375117
复制相似问题