php - DateTime倒计时和到期

标签 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 日期时间条目并为东部存储这样的值之前,我尝试设置时区

2012-08-27 20:00:00 

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

2012-08-28 21:00:00 

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

最佳答案

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

WHERE expiration_datetime > NOW() + INTERVAL X HOUR

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

关于php - DateTime倒计时和到期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12163488/

相关文章:

python - 转换具有缺失值的日期字符串

php - 将 PHP 变量传递给 Javascript 函数

mysql - MySQLx 尝试解析表达式时出错(Nodejs)

javascript - HTML 单选按钮数组

mysql - 防止在 mysql 字段中有零值

mysql - Prestashop 导入 CSV 错误 - PRIMARY key 条目重复

sql - 内部带有 IF 语句的 LAST_VALUE 不回填其分区 --> 选择每个分区的第一行时丢失最后的值 (BigQuery/SQL)

c++ - 转换从公历开始到现在的天数

php - 将一个文件拆分成多个文件,对网站性能有什么影响?

php - 如何从分组表中选择需要排序的多个值