2013-12-25 5 views
0

Я хочу рассчитать недели, дни между двумя датами.Как рассчитать количество недель, дней между двумя датами

например: 2013-12-25 к 2013-12-25 Выведет 1 Day

например: 2013-12-22 к 2013-12-25 Выведет 4 Days

например: 2013-12-18 к 2013-12-25 будет выводить 1 Week, 1 Day

например: выход 2013-12-18 для 2013-12-26 воли 1 Week, 2 Days

например: 2013-12-16 на 2013-12-30 будет выводить 2 Weeks, 1 Day

Я пытался использовать How to calculate the difference between two dates using PHP?

, но это не похоже на работу

Благодаря

+2

-1 * «но не работает» * не программирование вопрос. И все вопросы по дате/времени PHP заданы и уже ответили. Используйте поиск * больше *. Голосование закрывается. (Вы можете получить 500 репутации, если на самом деле вы обнаружите вопрос времени PHP, который ранее не задавался. Просто скажите мне, если вы думаете, что нашли его). – hakre

+0

Возможный дубликат [Как рассчитать разницу между двумя датами с помощью PHP?] (Http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php) –

+0

Я хочу показать diffrence b/w даты только за несколько недель, дней @RajeevRanjan – Gopal

ответ

1

Если вы хотите разницы шоу только за несколько недель и дней использовать эту функцию:

function diff_in_weeks_and_days($from, $to) { 
    $day = 24 * 3600; 
    $from = strtotime($from); 
    $to = strtotime($to) + $day; 
    $diff = abs($to - $from); 
    $weeks = floor($diff/$day/7); 
    $days = $diff/$day - $weeks * 7; 
    $out = array(); 
    if ($weeks) $out[] = "$weeks Week" . ($weeks > 1 ? 's' : ''); 
    if ($days) $out[] = "$days Day" . ($days > 1 ? 's' : ''); 
    return implode(', ', $out); 
} 

echo diff_in_weeks_and_days('2013-12-18', '2013-12-26'); # 1 Week, 2 Days 

demo

1

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

example: 

$time1; // contains seconds since 1970 
$time2; 

$diff=$time2-$time1; 

$days=($diff % 604800)/86400; 
$weeks=($diff-($days*86400))/604800; 

echo $weeks $days; 
+0

Что относительно скачков? UTC пропускает их? – Rudie

+0

нет, он не пропускает это, потому что функция time() получает вам секунды, прошедшие с 1970 года. – iCode4U

+0

Yup. Но '86400' секунд в день, а не' 3600' =) – Rudie

1

Используйте функцию DateTime :: Diff()

Пример:

$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 

Какой будет выход:

+2 days 

Для получения дополнительной информации обратитесь this страницу

+0

м с версией 5.2.3, но это необходимо> 5.3.0 – Gopal

+1

Я бы рекомендовал обновить до 5.3 tho –

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