【问题标题】:Handling timezone offset in PHP with UNIX timestamp使用 UNIX 时间戳处理 PHP 中的时区偏移
【发布时间】:2010-12-05 18:43:09
【问题描述】:

我有一个“通知”表,它可能会在任何 24 小时内发送,也可能不会发送。每个通知都有它自己的时区偏移量 GMT,所以我有一列偏移量,它将是 +/- 以秒为单位。

我需要创建一个 PHP 脚本,该脚本将定期 (via cron) 检查数据库中已发送的通知,然后如果当天的时间已过 00:00,则将其重置为未发送。我真的在努力寻找最好的方法——我能做一个简单的计算吗?

我正在考虑使用 mktime() [我的服务器在格林威治标准时间] 获取服务器午夜的 UNIX 时间,并以秒为单位计算出偏移量,但我想到的每一种方式似乎都是错误的。

类似:

if(!mktime()-$notifcationTimezone > $serverMidnight){}

我并不是说这不起作用,但我认为当服务器进入另一天时它不会起作用。它只是让我感到困惑,我对此没有信心。

【问题讨论】:

  • 请向我们展示您之前尝试过的每一种方式,为什么它不起作用...

标签: php timezone unix-timestamp


【解决方案1】:

这不仅仅是与strtotime 的简单比较,您甚至不需要将偏移量相加。您可以使用 date 函数设置您想要传递给 strtotime 的特定时间,以用于比较。

为了给我们一个更好的主意,请向我们展示一个来自您的数据库的真实示例以及 cron 现在的样子。

我不完全确定您要在这里尝试什么,但是您可能想要考虑的是您是否真的要重置任何东西,是否需要?您可以填写通知的发送日期。如果它与今天的日期不符,您要重新发送吗?

【讨论】:

  • 当我 sed 尝试比较使用 strtotime (strtotime(notificationdate)
  • 我已经有 unix 时间戳 - 为什么需要 strtotime?我拥有的一切都已经在几秒钟内......
猜你喜欢
  • 2012-08-24
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多