strtotime («сегодня») возвращает неверное время? - PullRequest
10 голосов
/ 31 марта 2012

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

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

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

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

1333144800

, что: пт, 30 марта 2012 г. 22:00:00 по Гринвичу в соответствии с конвертером эпох (неверно на пару часов)

Ответы [ 5 ]

21 голосов
/ 31 марта 2012

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

$today = strtotime('today UTC');
6 голосов
/ 31 марта 2012

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

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

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

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

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

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

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

2 голосов
/ 31 марта 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;
1 голос
/ 31 марта 2012

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

$today_midnight = strtotime('today UTC 00:00');
0 голосов
/ 31 марта 2012

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

date.timezone = America/El_Salvador
...