我有一些处理日期和时间的代码。我认为还可以,但是想测试时钟向前延伸时是否有效。
我可以使用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
基于此结果,您可以制作有条件的代码来模拟输出。