strtotime ("сегодня") возвращает неверное время?

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

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

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

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

1333144800

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

Ответ 1

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

$today = strtotime('today UTC');

Ответ 2

GMT (+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()) в script, чтобы правильно отображать даты вашего сайта, если

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

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

Ответ 3

strtotime( $time )

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

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

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

Ответ 4

Вам может потребоваться определенное время, а также день:

$today_midnight = strtotime('today UTC 00:00');

Ответ 5

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

date.timezone = America/El_Salvador