PHP дата / время проблема - PullRequest
0 голосов
/ 10 марта 2011

Так что я пытаюсь получить разницу в днях для следующих дат.Для одного из них это работает, а для другого номер выключен.Это должно быть 3.

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

$checkOut = strtotime('2011-02-16');
$checkIn = strtotime('2011-02-11');
echo ($checkOut - $checkIn) / (60 * 60 * 24); // => 5
echo floor(($checkOut - $checkIn)/(60*60*24)); // => 5

$checkOut = strtotime('2011-03-14');
$checkIn = strtotime('2011-03-11');
echo ($checkOut - $checkIn) / (60 * 60 * 24); // => 2.958333333
echo floor(($checkOut - $checkIn)/(60*60*24)); // => 2

Ответы [ 3 ]

1 голос
/ 10 марта 2011

Почему бы не использовать объектно-ориентированный php DateTime :: diff ?

<?php
$datetime1 = new DateTime('2011-03-11');
$datetime2 = new DateTime('2011-03-14');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
0 голосов
/ 10 марта 2011

Так что проблема в том, что оно пересекает летнее время.Хотя в спецификации PHP сказано, что strtotime возвращает секунды с начала эпохи, я полагаю, что это не так.

0 голосов
/ 10 марта 2011

Вы можете использовать DateTime :: diff () для этой проблемы.

Используя floor (), вы получаете следующее меньшее целое число (обрезая все после запятой).

...