Проблема, действительно в установленной временной зоне. На сколько я понял, если мы устанавливаем временную зону Moscow, то
strtotime("tomorrow")
возвращает нам временную метку с учетом временной зоны, а
date()
, в свою очередь просто прибавляет +3 часа. Пока, дабы этого избежать, в голову пришло только указать перед вызовом
date()
временную зону UTC.
date_default_timezone_set("Europe/Moscow");
$time_diff = strtotime("tomorrow") - strtotime("now");
date_default_timezone_set("UTC");
$timer = date("H:i", $time_diff);
Есть еще варианты решения этой проблемы(не прибегая к классу DateTime)?