strtotime('сегодня') возвращает неправильное время?

Я пытаюсь создать список выбора, начиная с текущей даты пользователя. Я хочу, чтобы он был установлен на полночь в формате временной метки unix.

Это все, что я делаю:

$today = strtotime('today');
echo $today;

Это мой результат:

1333144800

то есть: пятница, 30 марта 2012 г., 22:00:00 по Гринвичу согласно Epoch Converter (неверно на пару часов).


person Johnathan Au    schedule 31.03.2012    source источник
comment
Похоже, часовой пояс сервера установлен на GMT+2, поэтому вы действительно получаете правильный результат.   -  person Niko    schedule 31.03.2012


Ответы (5)


Если вы хотите, чтобы функция strtotime() возвращала отметку времени относительно UTC (00:00:00 UTC вместо, например, 00:00:00 UTC+2, если ваша система настроена на часовой пояс со смещением на 2 часа относительно UTC/GMT ), необходимо указать, что:

$today = strtotime('today UTC');
person Niko    schedule 31.03.2012

Время по Гринвичу (+0)

echo $today = strtotime('today GMT');
echo "<br>" . $today = date("d-m-Y H:i:s", $today);

Мы ожидаем, что ваш сервер работает по Гринвичу - это лучше всего (для маневрирования с отображением времени позже). Если нет, вы ДОЛЖНЫ настроить php.ini, установив это «date.timezone = GMT».

Когда вы это сделаете, вы увидите 00:00 с моими кодами.

Затем вы должны разработать функцию (например, DisplayDate()) в своем скрипте для правильного отображения дат вашего веб-сайта, если

  • вы находитесь не в зоне GMT
  • или/и если вы хотите, чтобы ваши пользователи видели время в своем часовом поясе, например, с выбором часового пояса.

DisplayDate() также должен включать поддержку изменения дневного света (0 или +1 час / летнее и зимнее время).

person Xfile    schedule 31.03.2012

strtotime( $time )

предназначен для возврата метки времени unix, то есть он возвращает количество секунд с 1 января 1970 года. http://www.php.net/manual/en/function.strtotime.php

Чтобы обойти это, используйте что-то вроде:

$today = date("d/m/Y H:i:s", strtotime('today'));
echo $today;
person Goldentoa11    schedule 31.03.2012

Возможно, вам придется специально установить время, а также день:

$today_midnight = strtotime('today UTC 00:00');
person hohner    schedule 31.03.2012

Вы должны проверить конфигурацию часового пояса в файле php.ini. В моем случае (я живу в Сальвадоре) мне пришлось изменить это так:

date.timezone = America/El_Salvador
person PachinSV    schedule 31.03.2012