gpt4 book ai didi

PHP夏令时检测

转载 作者:IT王子 更新时间:2023-10-29 01:15:46 28 4
gpt4 key购买 nike

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

这里有一个例子来说明它:

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

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

我仍然可以通过更新服务器本地时间之外的所有用户来处理这种情况,但是一旦我将所有其他用户的时间向前/向后移动,我仍然需要一种方法来检测何时(时间和日期)居住在英国以外的用户将(或不会)将他们的本地时间更改为可能的 DST 时间。

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

最佳答案

正如 Jimmy 指出的,您可以使用时区转换,但这在 PHP <5.3 上不可用。因为 dateTimeZone() 是 PHP>=5.2.2 但带参数的 getTransitions() 不是!在这种情况下,这里有一个函数可以为您提供时区数据,包括是否采用 DST。

function timezonez($timezone = 'Europe/London'){
$tz = new DateTimeZone($timezone);
$transitions = $tz->getTransitions();
if (is_array($transitions)){
foreach ($transitions as $k => $t){
// look for current year
if (substr($t['time'],0,4) == date('Y')){
$trans = $t;
break;
}
}
}
return (isset($trans)) ? $trans : false;
}

话虽如此,如果您只需要知道时区是否在夏令时,则有一个使用 date() 的更简单的方法。例如,如果您想知道英国是否在夏令时,您可以这样做:

date_default_timezone_set('Europe/London');
$bool = date('I'); // this will be 1 in DST or else 0

... 或提供时间戳作为 date() 的第二个参数,如果您想指定一个不同于当前服务器时间的日期时间。

关于PHP夏令时检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com