此刻,我正在尝试检测时区是否具有DST,而不是当DST影响此刻的时区时。检查时区是否有DST
我的代码看起来像这样的时刻:
function timezoneDoesDST($tzId) {
$tz = new DateTimeZone($tzId);
return count($tz->getTransitions(time())) > 0;
}
$tz = new DateTimeZone('UTC');
$termin = new DateTime('2017-08-04 12:00:00',$tz);
$mytimezone=array();
foreach(timezone_abbreviations_list() as $abbr => $timezone){
foreach($timezone as $val){
if(isset($val['timezone_id'])){
$found = 0;
$tz2 = new DateTimeZone($val['timezone_id']);
$termin->setTimezone($tz2);
foreach($mytimezone as $mytz)
{
if($mytz['time'] == $termin->format('Y-m-d H:i:s'))
{
$found = 1;
if(timezoneDoesDST($val['timezone_id']))
{
$found = 0;
}
}
}
if($found == 0)
{
$mytimezone[] = array('time' => $termin->format('Y-m-d H:i:s'),'timezone_id' => $val['timezone_id']);
}
}
}
}
foreach($mytimezone as $mytz)
{
echo $mytz['time'].' - '.$mytz['timezone_id'].'<br />';
}
的事情是,我不会用一个不同的时间和时区具有DST在所有显示所有不同的时区。
但此刻它显示了我所有时区,如果我删除此:
if(timezoneDoesDST($val['timezone_id']))
{
$found = 0;
}
这只是显示我有不同的时间的时区
感谢
不知道我明白你想要做什么。你想重新发明日期(“我”)功能吗? https://3v4l.org/WCIV4和http://php.net/manual/en/function.date.php – Andreas
那么期望的结果是什么?你想要一个使用DST的时区列表吗? –
@Andreas如果我正确的时候DST正在影响时间,那么日期(“l”)函数就会返回。但是我想整年生成这份清单,结果相同。所以日期(“l”)函数不适用于我 –