一尘不染

PHP夏令时检测

php

我需要在当地时间上午9:00向世界各地的用户发送电子邮件。该服务器在英国。我所能做的是在每个用户和服务器时间之间设置一个时差,如果不存在DST,则可以完美地工作。

这是一个示例来说明它:

  • John在纽约工作,比服务器(英国)时间早-5个小时
  • Richard在英国伦敦工作,因此与服务器的时差为0小时。

当服务器在某个星期日的凌晨2:00从GMT转到GMT +1(BST)时,这意味着John现在的时差为-6H。

这种情况下我仍然可以通过更新所有用户的服务器的本地时间之外处理,但一旦我前进/后退的所有其他用户的时候,我还需要一种方法来检测
(时间和日期)的用户生活英国以外的地区将(或不会)将当地时间更改为可能的夏令时。

我需要一个PHP方法来知道/检测世界上其他地方何时进入/退出DST。


阅读 578

收藏
2020-05-29

共1个答案

一尘不染

您是否需要自己了解DST过渡的所有详细信息?还是只需要知道给定时区的上午9:00?

如果是后者,PHP可以使用操作系统的时区数据库为您完成此操作。该的strtotime()函数在“搞清楚”你的意思是非常好:

echo strtotime("today 9:00 am America/New_York");  // prints "1306501200"
echo strtotime("today 9:00 am Europe/London");     // prints "1306483200"

只要确保您使用的是PHP支持的时区之一即可

2020-05-29