我有一些处理日期和时间的代码。我认为没关系,但是想测试一下,当DST的时钟前进时它会起作用。
我可以使用date_default_timezone_set('Europe/London');
更改时区,并想知道是否有一个易于模拟的DST,而不必等到时钟发生变化!
答案 0 :(得分:2)
您没有提供有关您要测试的内容的详细信息,但我认为您具有执行与时间相关的功能,例如:
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);
答案 1 :(得分:0)
您当然可以了解用户是否处于夏令时区域或夏令时当前是否有效。
echo date('I', time());
返回0/1;在哪里,
0 =夏令时无效。 1 =夏令时生效。
根据此结果,您可以制作条件代码来模拟输出。