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

这是一个示例来说明它:

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

  • 当服务器在某个星期日的凌晨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之一即可。

    07-24 18:36
    查看更多