【问题标题】:how to trigger time events in php in multiple local timezones如何在多个本地时区的php中触发时间事件
【发布时间】:2017-11-09 06:36:34
【问题描述】:

我有一个看起来像这样的数组

$alerts = array(
  array('alert' => '04:30:30', 'zone' => 'Europe/Berlin'),
  array('alert' => '04:30:30', 'zone' => 'Asia/Bangkok')
);

挑战是如何根据当地时间触发这个? 有时可能会发生变化,而且有些大陆有夏季/冬季其他时间没有..

【问题讨论】:

  • “触发器”是什么意思?您是否使用 PHP 作为长时间运行的脚本?你在写一个 cron 任务吗?
  • 是的,它由应用程序每分钟执行一次。
  • 我正在考虑使用 date_defaut_timezone_set 和 mktime 通过数组进行 foreach,并将其与本地时间的 +/- 60 秒进行比较,但这似乎有点过度。

标签: php timezone


【解决方案1】:

由于您已经有了良好的时区标识符,您应该将该数组中的每个条目转换为 DateTime 对象。那么就不需要手动计算下一次发生的时间了。

在您拥有 DateTime 对象的大数组后,对数组进行排序,使最先出现的项目位于顶部。之后,您计算触发应该在未来多少秒内发生,以及sleep() 持续多长时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多