Я просмотрел другие решения на SO, и ни одно из них, похоже, не решает проблему часового пояса / dst в следующем отношении.
Я звоню в NOAA Tide Prediction API и API национальной метеорологической службы NOAA, которые требуют передачи временного диапазона для получения данных. Для каждого местоположения в моей базе данных у меня есть часовой пояс в виде смещения по всемирному координированному времени и указывается, соблюдается ли летнее время (1 или 0). Я пытаюсь отформатировать некоторые даты (сегодня и завтра), чтобы они соответствовали LST (местное стандартное время) в его собственном часовом поясе, чтобы я мог перейти к этим API.
Мне сложно понять, как узнать, находится ли дата, например, сегодня, в диапазоне летнего времени или нет.
Вот что у меня есть на данный момент:
// Get name of timezone for tide station
// NOTE: $locationdata->timezone is something like "-5"
$tz_name = timezone_name_from_abbr("", $locationdata->timezone * 3600, false);
$dtz = new DateTimeZone($tz_name);
// Create time range
$start_time = new DateTime('', $dtz);
$end_time = new DateTime('', $dtz);
$end_time = $end_time->modify('+1 day');
// Modify time to match local timezone
$start_time->setTimezone($dtz);
$end_time->setTimezone($dtz);
// Adjust for daylight savings time
if( $locationdata->dst == '1' )
{
// DST is observed in this area.
// ** HOW DO I KNOW IF TODAY IS CURRENTLY DST OR NOT? **
}
// Make call to API using modified time range
...
Как я могу это сделать? Спасибо.