PHP模拟了日光节省



我有一些处理日期和时间的代码。我认为还可以,但是想测试时钟向前延伸时是否有效。

我可以使用date_default_timezone_set('Europe/London');更改时区,并想知道是否可以轻松模拟DST,而不必等到时钟更改!

您没有提供有关要测试的内容的详细信息,但我认为您的功能可以执行与时间有关的工作,例如:

function setExpiryTime(DateTime $start, $minutes){
}

明显的测试是提供输入参数,以使您的代码交叉DST边界。您可以在您喜欢的搜索引擎中找到此类信息,也可以运行简单的PHP片段:

<?php
$timezone = new DateTimeZone('Europe/London');
print_r( $timezone->getTransitions(mktime(0, 0, 0, 1, 1, date('Y')), mktime(0, 0, 0, 12, 31, date('Y'))) );
Array
(
    [0] => Array
        (
            [ts] => 1388530800
            [time] => 2013-12-31T23:00:00+0000
            [offset] => 0
            [isdst] => 
            [abbr] => GMT
        )
    [1] => Array
        (
            [ts] => 1396141200
            [time] => 2014-03-30T01:00:00+0000
            [offset] => 3600
            [isdst] => 1
            [abbr] => BST
        )
    [2] => Array
        (
            [ts] => 1414285200
            [time] => 2014-10-26T01:00:00+0000
            [offset] => 0
            [isdst] => 
            [abbr] => GMT
        )
)

因此您可以测试:

setExpiryTime(new DateTime('2014-03-30T00:55:00+0000'), 10);
setExpiryTime(new DateTime('2014-10-26T00:55:00+0000'), 10);

您当然可以找出目前在日光保存区域或夏令时的生效。

echo date('I', time());

这返回0/1;在哪里,

0 =节省日光没有生效。 1 =节省日光。

更多详细信息:http://php.net/manual/en/function.date.php

基于此结果,您可以制作有条件的代码来模拟输出。

相关内容

  • 没有找到相关文章

最新更新