DateTime倒计时和到期

时间:2012-08-28 16:21:36

标签: php mysql datetime

我的网站上有帖子有过期日期时间我将这些帖子存储在Mysql中作为

'Y-m-d H:i:s'

即。 2012-08-28 00:00:00

我将此日期时间转换为下面的格式,该格式将传递给jquery倒计时

$offset.', Y, n - 1, j, H, i, s'

这部分按照应有的方式运作。

我要做的是获取当前时间,只从数据库中获取未过期的帖子。绊倒我的东西是所有帖子都有不同的时区。他们中的大多数在午夜到期,但在不同的时区有些在东部午夜到期,而有些则在太平洋午夜到期。这些都存储为2012-08-28 00:00:00,时区以timezone.name即存储在数据库中。美国/东部。对于倒计时,$ offset由此值创建为-4,因此倒计时的输入为

-4, 2012, 8 - 1, 28, 00, 00, 00 

我正在使用的jquery计数器的哪些工作但是在尝试将当前日期与mysql日期条目进行比较时它不起作用。我已经尝试在获取mysql datetime条目之前设置时区并为east

存储这样的值
2012-08-27 20:00:00 

当我尝试设置当前时间并使用我的America / Phoenix时区时,我得到的值是晚上9点,当东部帖子到期时我得到

2012-08-28 21:00:00 

对我来说意味着这个帖子会提前一小时过期。这是我被卡住我打开将数据存储在倒计时的多个数据库条目中,一个用于到期数据库检查我只是不知道什么是实现我需要的最佳方法。任何帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:1)

我个人会将所有过期时间转换为UTC(或其他一些定义的时区 - 可能是您的数据库服务器和应用程序服务器的相同时间),然后再将它们输入数据库表,然后根据该表查询该表。特定用户的时区。例如,WHERE子句可能看起来像

WHERE expiration_datetime > NOW() + INTERVAL X HOUR

其中X是您为用户的时区应用小时差的地方。

答案 1 :(得分:0)

如果您允许发布时间戳未规范化,则您的数据库设计错误。只要所有时间戳都在同一时区,我和时区用户无关,这没什么大不了的。因此,回答您的问题是 - 修复您的设计,将所有时间戳保留在同一时区(GMT为简单起见)。