Здесь много ошибок, начиная с заголовка вашего вопроса:
как получить дату UTC для календарей, включающих DLS,
UTC четко определен и не имеет летнего времени.Если вы находитесь в другом часовом поясе и в месте с летним временем, то вы больше не в UTC.Итак, вопрос бессмысленный для начала.
$future_date = 'Nov 03, 2019 03:30 PM EDT';
EDT
означает «восточное дневное время», поэтому в этом случае вы вводите определенную интерпретацию независимо от даты.Вы заметите, что если вы измените его на EST
(восточное стандартное время), вы получите другой результат.
Возможно, вы захотите America/New_York
вместо EDT
.См. Также: https://www.php.net/manual/en/timezones.php
Это технически неверно, поскольку 3 ноября в 2 часа дня DLS переключится
Нет.2:00 AM.
Есть ли способ автоматически получить правильное время для будущих дат?
Прекратить подачу поврежденных данных PHP и неоднозначно отформатированных дат.У нас есть стандарты даты / времени, например, ISO8601.Дата / время - сложная вещь.Компьютеры не могут читать мысли и не знают, что вы намеревались, когда вы указали неправильную дату для определенного типа часового пояса с переходом на летнее время.