За последние 24 часа нас посетили 17704 программиста и 1658 роботов. Сейчас ищут 960 программистов ...

Посчитать дни между датами

Тема в разделе "PHP для новичков", создана пользователем Elena777, 30 янв 2011.

  1. Elena777

    Elena777 Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    10
    Симпатии:
    0
    Есть ли в PHP какая-нибудь встроенная функция, которая может посчитать дни между двумя заданными датами. Если нет, можете подсказать, как это сделать?
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Например так:
    PHP:
    1. <?php
    2.  
    3. $day = strtotime('31-01-2011');
    4.  
    5. // Поехали на неделю вперед
    6. echo date('d.m.Y', strtotime('+7 days', $day));
    7.  
    8. ?>
     
  3. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    посчитать разницу timestamp обеих дат и разделить на число секунд в 1 дне
     
  4. Elena777

    Elena777 Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    10
    Симпатии:
    0
    Спасибо, только я не это имела в виду. Мне нужно узнать сколько дней, например, находится между 01.01.2011 и 27.07.2011. Эти два дня всегда разные. Т.е. как раз первый параметр функции strtotime() и нужно вывести на основе 2-х дат.
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Elena777
    Тогда так (чуточку математики):

    PHP:
    1. <?php
    2.  
    3. $difference = intval(abs(
    4.     strtotime('01-01-2011') - strtotime('27-07-2011')
    5. ));
    6.  
    7. // Количество дней
    8. echo $difference / (3600 * 24);
    9.  
    10. ?>
     
  6. Elena777

    Elena777 Активный пользователь

    С нами с:
    30 янв 2011
    Сообщения:
    10
    Симпатии:
    0
    Спасибо, Apple, это как раз и есть то, что я искала.
     
  7. M@xim7

    M@xim7 Новичок

    С нами с:
    14 авг 2014
    Сообщения:
    4
    Симпатии:
    0
    Доброго времени суток! Делаю, как написал Apple, но у меня не конкретные даты, как в примере, а переменные (значения которых выводится так: $date1 = $item->fields_by_id[64]->result ; и $date2 = $item->fields_by_id[65]->result ; ). Результат - 0. Можете подсказать, что не так
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
  9. M@xim7

    M@xim7 Новичок

    С нами с:
    14 авг 2014
    Сообщения:
    4
    Симпатии:
    0
    var_dump() выдает 0, но если
    Код (PHP):
    1. var_dump($date1 = $item->fields_by_id[64]->result) 
    то выводится дата из переменной.
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    в каком виде? просто скопируй сюда текст который выводится - для $date1 и $date2
     
  11. M@xim7

    M@xim7 Новичок

    С нами с:
    14 авг 2014
    Сообщения:
    4
    Симпатии:
    0
    для $date1 - 2014-08-01
    для $date2 - 2014-08-07
     
  12. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    а зачем ты городишь такие горы, сделай отдельно:
    Код (PHP):
    1. $date1 = $item->fields_by_id[64]->result;
    2. var_dump($date1, strtotime($date1));
    и покажи. сдается мне, ты дурачишь и себя и нас.
     
  14. M@xim7

    M@xim7 Новичок

    С нами с:
    14 авг 2014
    Сообщения:
    4
    Симпатии:
    0
    Разобрался, все работает - в коде на выводе было <span>2014-08-07</span> и наверное поэтому значение не учитывалось. Помог strip_tags для $date1.