2010-07-27 3 views
0
$dateDiff = $mtime - $ctime; 
$fullDays = floor($dateDiff/(60*60*24)); 
$fullHours = floor(($dateDiff-($fullDays*60*60*24))/(60*60)); 
$fullMinutes = floor(($dateDiff-($fullDays*60*60*24)-($fullHours*60*60))/60); 
echo "Difference is $fullDays days, $fullHours hours and $fullMinutes minutes."; 

Я ищу, чтобы добавить возможность видеть недели. Я знаю, что могу просто повторить тот же процесс, но есть ли библиотека или более простой способ?PHP - Извлечение недель/дней/часов/минут с даты calc

+0

DateTime as Mvangeest: здесь представлены недели и другие относительные форматы. http://www.php.net/manual/en/datetime.formats.relative.php – Chris

+0

Ваш код не учитывает DST. Вместо этого используйте 'DateInterval'. – Artefacto

ответ

1

В PHP 5.3 и выше существует класс DateTime. См. http://php.net/manual/en/class.datetime.php.

+0

Я собирался сказать то же самое, но класс DateInterval, который вы получаете, когда разбираетесь в двух DateTimes, действительно не делает вещи намного проще, потому что вам все равно нужно умножить количество дней на 24 и часов на 60. И недель? Он не предлагает вариант «Неделя» ... так что вы вернулись на квадратный. Технически, вероятно, еще лучше использовать некоторые соображения ООП. Но не легче, боюсь. – kander

+0

[DateInterval :: format] (http://us2.php.net/manual/en/dateinterval.format.php) * Включает опции, показывающие месяцы и дни, а также часы, минуты и секунды. Вы правы @ kander, это не делает недель ... но OP не просил недели. Тем не менее, вы можете получить общее количество дней и легко вычислить недели. – Charles

+0

Чарльз, я никогда не говорил, что он не предлагает эти варианты. То, что я сказал, это то, что, чтобы получить результат, о котором попросил стартер, т. Е. Общее количество минут, вы все равно будете размножаться. Если я получу TimeInterval между Now и 1 час 20 минут назад, я не получаю 80 минут. Я получаю 20 минут, и я получаю 1 час. Поэтому я хотел сказать, что, так как вам «нужно будет умножить количество дней на 24 и часы на 60», чтобы получить ответ на заданный вопрос, использование DateTime не намного проще. Наверное, я должен был сформулировать это более четко, очевидно. Извините за непонимание! – kander

Смежные вопросы