Возможный дубликат:
Как рассчитать разницу между двумя датами с помощью PHP?
Как получить разницу между двумя датами в Год / Месяц / Неделя / День?
Я пытаюсь рассчитать годы и месяцы и дни между двумя датами в PHP.
Я также использую timestamp of the date. есть ли способ рассчитать годы и месяцы и
дней от разницы этих штампов времени.
например, первая дата – 2 января 2008 года, а вторая – 5 июля 2012 года. Результатом является 4 года 5 месяцев и 3 дня.
Я работаю над меткой времени как дата ввода и хочу знать, что есть какая-либо функция, которая непосредственно вычисляет выше вещи по двум временным меткам ввода
Вы можете использовать для этого объект DateTime (обратите внимание на отсутствующий «,» в конструкторе datetime).
$datetime1 = new DateTime('2 Jan 2008'); $datetime2 = new DateTime('5 July 2012'); $interval = $datetime1->diff($datetime2); echo $interval->format('%y years %m months and %d days');
Вы можете сделать это довольно легко с помощью DateTime:
$date1 = new DateTime("2008-01-02"); $date2 = new DateTime("2012-07-05"); $diff = $date1->diff($date2); echo "difference " . $diff->y . " years, " . $diff->m." months, ".$diff->d." days "
Документация
Вы должны взглянуть на Carbon , это довольно новая PHP 5.3 lib поверх DateTime с множеством полезных методов.
Для даты diff:
<?php $dtOttawa = Carbon::createFromDate(2000, 1, 1, 'America/Toronto'); $dtVancouver = Carbon::createFromDate(2013, 1, 1, 'America/Vancouver'); echo $dtOttawa->diffInHours($dtVancouver); echo $dtOttawa->diffInDays($dtVancouver); echo $dtOttawa->diffInMinutes($dtVancouver); echo $dtOttawa->diffInYears($dtVancouver);
Если вы хотите, чтобы читаемый человеком diff:
$dt = Carbon::createFromDate(2011, 2, 1); echo $dt->diffForHumans($dt->copy()->addMonth()); // 28 days before echo $dt->diffForHumans($dt->copy()->subMonth()); // 1 month after
Вы можете создать два объекта DateTime (www.php.net/datetime) из временных меток. При вызове метода diff вы получаете объект DateInterval, который имеет свойства в течение многих лет и месяцев.