Если у меня есть часовой пояс пользователя (например, Австралия/Сидней), как мне использовать PHP, чтобы найти дату и время, когда дневное сбережение начинается в свое местное время?
Я закончил тем, что работал над ним, основываясь на каком-то кодексе из его билета.
$tz = new DateTimeZone('Australia/Sydney');
$transitions = $tz->getTransitions();
if (is_array($transitions)) {
foreach ($transitions AS $k => $t){
// Look for current year
if (substr($t['time'],0,4) == date('Y')) {
// If isdst is set to 1, that means daylight savings starts on this date
if (!empty($t['isdst'])) {
$trans = $t;
// If isdst is empty, that means daylight savings has already started
// so I'll go back to the previous transition
} else {
$prev_k = $k - 1;
$trans = $transitions[$prev_k];
}
break;
}
}
}
echo '<pre>';
print_r($trans);
echo '</pre>';