Похоже, у вас недостаточно настроен часовой пояс на вашем сервере.Просто выведите полную дату и время, вам не нужно ждать полуночи, чтобы узнать разницу между правильным и неправильным часом.
Что касается времени и часового пояса в php, вам нужно знать два факта:
- отметки времени всегда указаны по Гринвичу, НЕ в зависимости от часового пояса
- Дата выводится в формате отметки времени, в зависимости от часового пояса
Зная это, вы легко можете отладить свою программу.
<?php
echo date('r').PHP_EOL;
// timezone not configured
// Wed, 02 Jan 2019 16:11:36 +0000
echo date('U').PHP_EOL;
// 1546445496
ini_set('date.timezone', 'America/Denver');
echo date('r').PHP_EOL;
// Wed, 02 Jan 2019 09:11:36 -0700
echo date('U').PHP_EOL;
// 1546445496 , same as above
С этого момента у вас есть много решений, я рекомендую следующие два:
Поставьте этов вашем файле php.ini:
date.timezone="America/Denver"
Если вы не можете редактировать php.ini, используйте объект DateTime для его преобразования вручную.
$d = new DateTime();
$d->setTimezone(new DateTimeZone('America/Denver'));
echo $d->format('r').PHP_EOL;
// Wed, 02 Jan 2019 09:11:36 -0700