首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP时区变送器

PHP时区变送器
EN

Stack Overflow用户
提问于 2013-12-04 12:15:06
回答 2查看 186关注 0票数 0

在PHP中,您可以使用简单的代码行更改时区

代码语言:javascript
复制
date_default_timezone_set('Europe/London');

我遇到的问题是制作一个基于用户的时区变更器。我希望让用户使用带有时区选项的放置框,并使用MySQL将其保存在用户的数据变量上。我的问题与PHP如何处理时区有关,特别是每个变量的名称。时区的名称如下所示,这让人感到很困惑。

  • 欧洲/伦敦
  • 亚洲/上海
  • 美国/道森

这不是唯一的问题,有这么多的不同时区名称达到数百个。我不知道要用的那几百个,因为我显然不能全部使用,因为这样做有点多余,效率也不高。我会使用像GMT+5 or GMT-1这样的时区,但是PHP手册说我不应该使用它们,而且据我所读到,它们不支持DST。我想知道我应该怎么做才能得到一个好的时区清单,这对我的目的是有好处的。或者,如果有人够好的话,他们可以把我转到一个我可以用的名单上。

我正在寻找任何名单,可以涵盖大多数时区。

TL;博士我需要帮助找出用于时区拖放框的时区。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-04 13:01:57

如果您为每个用户存储一个时区字符串(例如“欧洲/伦敦”),则可以将传入时间转换为UTC,然后在显示时重新转换它们。一旦你弄明白了,那就很容易了:

代码语言:javascript
复制
    $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获取列表的方法。

票数 2
EN

Stack Overflow用户

发布于 2013-12-04 14:03:11

您应该理解PHP时区是IANA标准时区。它们并不是PHP的专利,用户可能已经习惯于看到它们(可能)。

如果您想限制选择,请考虑使用两个下拉列表,第一个是选择国家,第二个是选择国家内的时区。PHP有此功能,数据来自原始数据集中的zone.tab。

另一种方法是使用基于地图的时区选择器控件,例如这个用于javascript

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20375117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档