Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Кол-во между датами

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kuller
Отправлено: 18 Августа, 2017 - 12:42:35
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




Есть две даты например 10.07.2016 и 11.09.2016 даты могут быть разные отличаться и в годах. Но задача стоит узнать сколько месяцев прошло между датами.

Есть код
PHP:
скопировать код в буфер обмена
  1.  
  2. $start = date('Y-m-d', strtotime('05.10.2016'));
  3. $end = date('Y-m-d', strtotime('01.11.2016'));
  4.  
  5. function GetDaysBetween($date1 , $date2)
  6. {
  7.    $datetime1 = new DateTime($date1);
  8.    $datetime2 = new DateTime($date2);
  9.    $interval = $datetime1->diff($datetime2);
  10.    return $interval->format('%m');
  11. }
  12.  
  13. echo GetDaysBetween($start,$end);
  14.  


но чета он не корректно работает. Например с датами которые указаны в примере показывает 0, хотя должно быть 1. Если изменить число у конечной даты на 05.11.2016 тогда покажет 1. Как это исправить можно?

(Отредактировано автором: 18 Августа, 2017 - 13:04:39)

 
 Top
rgl
Отправлено: 18 Августа, 2017 - 13:47:35
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Авг. 2017  
Откуда: замкадье


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1. $start = date('Y-m', strtotime('05.10.2016'));
  2. $end = date('Y-m', strtotime('01.11.2016'));
  3.  
  4. $start = explode( '-', $start );
  5. $end = explode( '-', $end );
  6.  
  7. $start = $start[0]*12+$start[1];
  8. $end = $end[0]*12+$end[1];
  9.  
  10. echo $end-$start;

З.Ы. А почему, если нужны МЕСЯЦЫ, функция называется так, что можно подумать будто дни?

(Отредактировано автором: 18 Августа, 2017 - 13:54:16)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB