我需要向世界各地的当地时间上午9:00发送电子邮件。该服务器在英国。我所能做的是在每个用户和服务器时间之间设置一个时差,如果不存在DST,则可以完美地工作。
这是一个示例来说明它:
当服务器在某个星期日的凌晨2:00从GMT转到GMT +1(BST)时,这意味着John现在的时差为-6H。
在这种情况下,我仍然可以通过更新服务器本地时间之外的所有用户来处理,但是一旦向前/向后移动了所有其他用户的时间,我仍然需要一种方法来检测用户的居住时间(时间和日期)英国以外的地区将(或不会)将当地时间更改为可能的夏令时。
我需要一种PHP方法来知道/检测世界上其他地方何时进入/退出DST。
最佳答案
您是否需要自己了解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 supported timezones之一即可。