Посчитать разницу в датах и показать результат в днях

Тема в разделе "PHP", создана пользователем UDAV, 4 сен 2011.

Модераторы: latteo
  1. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    Как посчитать разницу в датах и показать результат в днях?
    Допустим из 10.03.2015 вычитаем 22.11.2011 = ххх Дней
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    PHP:
    $ftime="10.03.2015";
    $stime="22.11.2011";
    $fetime=explode("."$ftime);
    $setime=explode("."$stime);
    $fmtime=mktime(000$fetime[1], $fetime[0], $fetime[2]);
    $smtime=mktime(000$setime[1], $setime[0], $setime[2]);
    $rtime=abs($fmtime-$smtime);
    $dtime=ceil($rtime/86400);
    echo 
    $ftime." - ".$stime." = ".$dtime." дней";
     
    UDAV нравится это.
  3. OpS87

    OpS87

    Регистр.:
    9 авг 2011
    Сообщения:
    175
    Симпатии:
    15
    Вот туториал:
    http://www.developertutorials.com/tutorials/php/calculating-difference-between-dates-php-051018-1024/
     
    UDAV нравится это.
  4. grey109

    grey109

    Регистр.:
    3 апр 2007
    Сообщения:
    176
    Симпатии:
    19
  5. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    dino, а что дописать чтобы в минус считало? Если из меньшего вычесть большее...
     
  6. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    $rtime=$fmtime-$smtime;
     
    UDAV нравится это.
  7. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    Тогда не считает когда из большего меньшее вычитать, также пишет минус.
     
  8. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Чето я не догнал что тебе нужно...
    В моем первом варианте обрабатывается модуль разности между датами и независимо от очередности дат, результат будет один и тот же:
    22.11.2011 - 10.03.2015 = 1204 дней
    10.03.2015 - 22.11.2011 = 1204 дней
    во втором случае обрабатывается простая разность между датами и результат зависит от очередности дат:
    22.11.2011 - 10.03.2015 = -1204 дней
    10.03.2015 - 22.11.2011 = 1204 дней
    покажи как должно быть по твоему?
     
  9. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    dino, нужно как второй вариант, я что-то не пойму тогда куда ставить $rtime=$fmtime-$smtime; ?

    а, все, полнял)) день города сказывается на работу))) Спасибо тебе dino!
     
  10. DenisK

    DenisK

    Регистр.:
    8 фев 2007
    Сообщения:
    206
    Симпатии:
    14
    Переводите обе даты в формат unix stamp с помощью ф-ии mktime()
    Из одной даты вычитаем другую.
    Получается разница во времени - в секундах.
    делим значение на количество секунд в дне (60 * 60 * 24) - получаем разницу в днях.
    Округляем в большую или меньшую степень (как вам нужнее) - и результат готов.

    например:
    $a=mktime (0,0,0,1,1,2011);
    $b=mktime (0,0,0,5,2,2011);
    echo $difference = intval(($b-$a)/(60 * 60 * 24));