【问题标题】:The standard way for switching from/to user_timezone and gmt从/到 user_timezone 和 gmt 切换的标准方式
【发布时间】:2012-02-24 08:22:00
【问题描述】:

我使用php的date_default_timezone_set()并根据用户表中用户的timezone字段进行设置。因此,我可以轻松地向用户显示日期/时间并从他们那里获取日期/时间。

但是为了在数据库中存储与日期相关的值,我必须使用标准的 GMT 时区。

问题:在 user_timezone 和 GMT 之间切换的最佳标准方式是什么?

当我想在数据库中插入或更新字段时,您是否建议我按照这些步骤操作?

  1. 使用date_default_timezone_set('GMT');更改时区
  2. 使用$inserttimestap = time();$inserttimestamp = mktime(); 获取时间
  3. 使用date_default_timezone_set($this->session->userdata('timezone'));将时区改回用户默认值

【问题讨论】:

  • 我想说最好的方法是不要误用默认的时区设置,因为它会浪费给用户,而是让应用程序知道如何向用户显示日期或时间。
  • 据我研究,根据用户设置date_default_timezone_set() 看起来并不是误用。如果我不这样做,我会在处理 user_timezone 以读取和显示日期/时间时遇到很多麻烦。此外,我编写的应用程序不使用公历。它应该使用波斯(Jalali)日期。所以如果我不想根据用户时区设置默认时区,我的问题会增加。
  • 可能是,我只称它为误用。您可以将我的声明转为 180,然后它仅意味着当您存储时间时,您需要有应用程序时区(这是固定的,例如 GMT)。就这样。因此,当您存储将日期转换为 GMT 时间戳并读取时,将其转换回用户时间戳。就是这样。

标签: php datetime timezone timestamp


【解决方案1】:

绝对没有必要使用date_default_timezone_set('GMT'),因为要转换为GMT,有一组特殊的函数名称以'gm'开头:

  • gmmktime() 获取 GMT 时区的时间戳。
  • gmdate() 提供 GMT 日期格式。
  • 还有gmstrftime()PHP manual

  • 此外,值得注意的是,time() 仅在 GMT 中返回当前时间戳

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2016-12-01
  • 2022-01-11
  • 2020-05-28
  • 1970-01-01
  • 2010-12-24
相关资源
最近更新 更多