Как расчитать разницу между двумя датами на PHP?

PHP, Вопросы и ответы
25 февраля 2012

Вопрос

Предположим, что у меня есть 2 даты:
Начальная дата: 2007-03-24
Конечная дата: 2009-06-26
Как я могу на PHP получить разницу между этими датами (2 года, 3 месяца и 2 дня)?


Ответ №1

Если Вы используете PHP 5.3 и выше, тогда лучше воспользоваться следующим методом:

$date1 = new DateTime("2007-03-24");
$date2 = new DateTime("2009-06-26");
$interval = $date1->diff($date2);
echo "Разница: " . $interval->y . " лет, " . $interval->m." месяцев, ".$interval->d." дней";

Подробнее об этой функции можно почитать в документации.
Однако, если на Вашем сервере установлена PHP ниже 5.3, тогда можно воспользоваться методом ниже. Учтите, что он несколько приблизительный:

$date1 = "2007-03-24";
$date2 = "2009-06-26";

$diff = abs(strtotime($date2) - strtotime($date1));

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

printf("%d лет, %d месяцев, %d дней\n", $years, $months, $days);

Нет комментариев

Добавить комментарий


(обязательно)