#php #time #datetime-format
#php #время #datetime-формат
Вопрос:
Мой код
$start_time= time();
echo "<BR><BR>";
echo "start: ".date("G:i:s",$start_time);echo "<BR>";
echo "now: ".date("G:i:s",time());echo "<BR>";
echo "difference: ".date("G:i:s",time()-$start_time);echo "<BR>";
echo "<BR><BR>";
echo time()-$start_time;
echo "<BR><BR>";
и результат таков
start: 12:03:41
now: 12:06:04
difference: 10:02:23
143
Есть идеи, почему количество часов не равно 0?
Ответ №1:
Вы пробовали явно устанавливать часовой пояс для своего скрипта?
date_default_timezone_set('UTC');
Комментарии:
1. Не могли бы вы объяснить, почему это помогло? 🙂
2. Я не знаю наверняка, но я предполагаю, что date () преобразуется в localtime, а time () возвращает время в UTC — в документах PHP неясно, что происходит.
Ответ №2:
Я думаю, вам следует использовать временную метку unix при вычислении различий в датах.
Смотрите ниже
$start_time= date("U", time());
sleep(5); //stops execution for 5 seconds
$endtime = date("U",time());
echo date("G:i:s",$endtime - $start_time); //Outputs 0:00:05
или что-то подобное для фактических различий в дате / времени
$start_time= date("U", strtotime("11/11/11 12:53"));
$endtime = date("U",strtotime("11/11/11 12:59"));
echo date("G:i:s",$endtime - $start_time);
Выводит 0:06:00
6 минут
Комментарии:
1. Может быть, у меня это не работает из-за другого часового пояса? Исправлением для меня было добавление
date_default_timezone_set('UTC');
к моему текущему коду.
Ответ №3:
Разница должна быть просто time () — $ start_time, чтобы указать количество секунд, необходимое для запуска скрипта. Если вы передадите его в date, то он выдаст дату через 143 секунды после эпохи Unix. Сделайте формат даты ‘Y / m / d G: i: s’, чтобы точно видеть, что там происходит.