2012-03-28 2 views
-1

Можно создать дубликат:
How to calculate the difference between two dates using PHP?PHP найти разницу между датами

У меня есть PHP-массив, содержащий даты выпуска фильма в виде «2012-04-04» как пример. Как я могу найти разницу в 2 датах.

Например -

2012-04-04

2012-03-31

Ожидаемый ответ - 5 дней разница

+1

PHP> = v5.3 вы можете использовать [ 'date_diff'] (http://php.net/manual/en/function.date-diff.php) (ака [' DateTime :: Diff () '] (http://www.php.net/manual/en/datetime.diff.php)) –

ответ

1
$d1 = new DateTime('2012-04-04'); 
$d2 = new DateTime('2012-03-31'); 

$interval = $d1->diff($d2); 

echo $interval->format('%R%a days'); 
+0

Ive помещает даты в массив, как бы я нашел разницу между элементами массива вместо переменных? Спасибо за вашу помощь – user1064660

0

Я написал эту функцию, некоторое время назад, чтобы вычислить разницу между датами. Он вернет массив всех измерений даты, которые составляют разницу.

function date_difference($date1, $date2) { 
    $seconds_count = array(
     'year' => (365 * 24 * 60 * 60), 
     'month' => (30 * 24 * 60 * 60), 
     'day' => (24 * 60 * 60), 
     'hour' => (60 * 60), 
     'minute' => 60 
    ); 

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

    $years = floor($diff/$seconds_count['year']); 
    $diff -= ($years * $seconds_count['year']); 

    $months = floor($diff/$seconds_count['month']); 
    $diff -= ($months * $seconds_count['month']); 

    $days = floor($diff/$seconds_count['day']); 
    $diff -= ($days * $seconds_count['day']); 

    $hours = floor($diff/$seconds_count['hour']); 
    $diff -= ($hours * $seconds_count['hour']); 

    $minutes = floor($diff/$seconds_count['minute']); 
    $diff -= ($minutes * $seconds_count['minute']); 

    $seconds = $diff; 

    return array('seconds' => $seconds, 'minutes' => $minutes, 'hours' => $hours, 'days' => $days, 'months' => $months, 'years' => $years); 
} 
+0

Если php> = 5.3.0 ' $ time_one = new DateTime ('2010-07-29 12:43 : « ' $ time_two = new DateTime ('2010-07-30 01:23:45'); ' ' echo ($ time_one-> diff ($ time_two)); ' –

+0

Я не на 5.3+, так что это то, что я использую :) –

+0

Кори, это только ярлык = P –

0

Преобразовать каждую дату с strtotime(), который дает вам метку время UNIX (в секундах). Вычитаем и посмотрим, сколько секунд между двумя датами. 60 * 60 * 24 - это количество секунд в секундах, разделение и округление, и у вас есть приблизительное количество дней.

+0

Я бы сказал, что это плохой совет, используя временную метку Unix имеет некоторые серьезные ограничения. Теперь, когда php имеет объект DateTime, я настоятельно рекомендую использовать его, а не ваше предложение. – Bazzz

0

Что вам нужно сделать, так это превратить обе даты в формат UTC (временная метка). Вы можете, чем минус их от друг друга, дать вам разницу в секундах.

Оттуда просто конвертируйте в дни.

Разница = разница/(60 * 60 * 24).

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