此刻,我正在嘗試檢測時區是否具有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」)函數不適用於我 –