Попробуйте изменить $today = strtotime("today GMT");
на
$today = strtotime("today",gmdate('U'));
Когда я выполнил это $today = strtotime("today GMT");
в моей системе (EDT, 31 марта 2019 г., 18:00), результат был 1553990400 30 Mar, 2019 20:00
Я прочитал PHP: относительный формат даты и времени Doc и не смог найти никаких признаков того, что часовой пояс используется в каком-либо формате, поэтому я попробовал его с gmdate('U')
.
Этот код:
echo "\ngmdate\n";
echo "current date: ",strtotime("today"),"<-- ",date('d M, Y H:i'),"\n";
echo "'today GMT': ",strtotime("today GMT"),"<--",date('d M, Y H:i',strtotime("today GMT")),"\n\n";
$todayGMdate = strtotime("today",gmdate('U'));
echo $todayGMdate,"<-- ",date('d M, Y H:i',$todayGMdate),"\n";
for ($i = 0; $i < 10; $i++) {
$d=strtotime("+$i day",$todayGMdate);
echo date('d M, Y', $d).'-'.$d," <-- ",date('d M, Y H:i',$d),"\n";
}
Дает этот результат:
gmdate
current date: 1554091200<-- 01 Apr, 2019 10:44
'today GMT': 1554076800<--31 Mar, 2019 20:00
1554091200<-- 01 Apr, 2019 00:00
01 Apr, 2019-1554091200 <-- 01 Apr, 2019 00:00
02 Apr, 2019-1554177600 <-- 02 Apr, 2019 00:00
03 Apr, 2019-1554264000 <-- 03 Apr, 2019 00:00
04 Apr, 2019-1554350400 <-- 04 Apr, 2019 00:00
05 Apr, 2019-1554436800 <-- 05 Apr, 2019 00:00
06 Apr, 2019-1554523200 <-- 06 Apr, 2019 00:00
07 Apr, 2019-1554609600 <-- 07 Apr, 2019 00:00
08 Apr, 2019-1554696000 <-- 08 Apr, 2019 00:00
09 Apr, 2019-1554782400 <-- 09 Apr, 2019 00:00
10 Apr, 2019-1554868800 <-- 10 Apr, 2019 00:00
Это кажется , как strtotime("today GMT")
получает начало сегодняшнего дня в текущей локали, а затем добавляет смещение gmt.
Я подозреваю, что эта заметка из документа в игре:
Примечание:
Относительные операторы всегда обрабатываются после не относительного
заявления. Это означает «+1 неделя, июль 2008» и «июль 2008, +1 неделя».
эквивалент.
Исключениями из этого правила являются: "вчера", "полночь", "сегодня", "полдень"
и завтра". Обратите внимание, что "завтра 11:00" и "завтра 11:00"
разные. Учитывая сегодняшнюю дату «23 июля 2008 года» первой
производит "2008-07-24 11:00", где, как второй производит
"2008-07-24 00:00". Причина этого заключается в том, что эти пять утверждений
напрямую влияет на текущее время.