MySQL时间偏移量_MySQL / PHP中的时区偏移量(和st / dst更改)

基本上我有一个网站,可以让商店存储他们的开/关时间。

现在,我正在尝试添加一项功能,使访客可以查看商店是否关门。

我了解我可以执行以下查询:

SELECT * FROM `store_hours` WHERE TIME(NOW()) BETWEEN `opens` AND `closes`

...,查询工作并检索当前打开的商店。但是,起初,此查询没有考虑商店的时区。

所以..我决定存储商店的开/关时间,并附加到UTC的转换:

id | store_id |打开关闭utc_opens | utc_closes

现在我可以这样查询:

SELECT * FROM `store_hours` WHERE TIME(NOW()) BETWEEN `utc_opens` AND `utc_closes`

因此,现在我可以轻松地获得有关开设了多少家商店的全局列表,而无论它们在哪里都无所谓。

现在我来解决这个问题。通过PHP,我所做的就是将偏移量添加到时间戳中:

date('H:i', strtotime($values['closes']) + $offset)

然后我开始考虑太平洋标准时间,然后是夏令时。

我想添加此打开/关闭功能,它将成为系统的重要组成部分。只是如果我一个小时假,我将失去很多收入。

我以前从未处理过(我也不希望这样做,因为这是一个令人烦恼的复杂问题)。也就是说,有一些方法可以解决此问题:

您如何处理时区问题?

看来,如果您希望系统不能完美运行,但很好,那么您将不得不陷入以下困境:

http://en.wikipedia.org/wiki/Zoneinfo

简而言之,问题是粒度复杂性之一。无论您多么努力,都不能编写简单的脚本来确定仅在静态GMT偏移量的情况下商店的确切时间。为了克服这个问题,人们已经整理了公共数据库,这些数据库几乎(几乎)解决了时区中固有的所有小问题。即使您知道某个用户位于美国西部(洛矶山脉以西),也不知道该用户位于Barstow还是Phoenix(亚利桑那州未进行DST,所以半年时间与LA相同,另一半与丹佛相同)。

回到数据输入...您只需要为每个商店输入准确的时区代码,并查询该zoneinfo数据库以确定当前偏移量应为多少。

尝试这个:

确定用户时区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值