Intereting Posts
Лучший способ показать сообщение администратора определенным пользователям? Выбрасывание исключений в автозагрузчике SPL? Рекурсивная функция для комментариев и ответов PHP-приложения setcookie, Невозможно изменить информацию заголовка – уже отправленные заголовки Проблема субдомена htaccess в Magento Устранение утечек памяти PHP Ошибка анализа данных org.json.JSONException: Конец ввода на символ 0 из – Android symfony2 – assetic assetic: команда dump не создает таблицы стилей правильно получать последовательные записи в mysql Zend 1.11 и Doctrine 2 Auto генерируют все необходимое из уже существующей базы данных Как проверить, находится ли дата в заданном диапазоне? Вызов статического метода PHP с именем класса переменных и пространствами имен новые строки (\ r \ n) не работают в теле письма PHP / SQL – Преобразование EBCDIC в ASCII Как добавить расширение select2 в качестве фильтра в CGridView на Yii

Undefined date_diff ()

Я пытаюсь использовать date_diff() :

 $datetime1 = date_create('19.03.2010'); $datetime2 = date_create('22.04.2010'); $interval = date_diff($datetime1, $datetime2); echo $interval->format('%R%d days'); 

Его не работает для меня, дает ошибку:

 Call to undefined function date_diff() 

Как я могу заставить его работать?

Используется PHP 5.2.

Благодарю.

    Related of "Undefined date_diff ()"

    Для функции date_diff требуется версия PHP версии 5.3 или выше.

    ОБНОВИТЬ

    Пример для PHP 5.2 (взято из комментариев пользователя date_diff).

     <?php function date_diff($date1, $date2) { $current = $date1; $datetime2 = date_create($date2); $count = 0; while(date_create($current) < $datetime2){ $current = gmdate("Ymd", strtotime("+1 day", strtotime($current))); $count++; } return $count; } echo (date_diff('2010-3-9', '2011-4-10')." days <br \>"); ?> 

    Вот версия, которая не использует объекты Date, но это не имеет никакого значения в 5.2.

     function date_diff($d1, $d2){ $d1 = (is_string($d1) ? strtotime($d1) : $d1); $d2 = (is_string($d2) ? strtotime($d2) : $d2); $diff_secs = abs($d1 - $d2); return floor($diff_secs / (3600 * 24)); } 
     function date_diff($date1, $date2) { $count = 0; //Ex 2012-10-01 and 2012-10-20 if(strtotime($date1) < strtotime($date2)) { $current = $date1; while(strtotime($current) < strtotime($date2)){ $current = date("Ymd",strtotime("+1 day", strtotime($current))); $count++; } } //Ex 2012-10-20 and 2012-10-01 else if(strtotime($date2) < strtotime($date1)) { $current = $date2; while(strtotime($current) < strtotime($date1)){ $current = date("Ymd",strtotime("+1 day", strtotime($current))); $count++; } $current = $current * -1; } return $count; } 

    Сначала преобразуйте обе даты в формат mm / dd / yyyy, затем выполните следующие действия:

      $DateDiff = floor( strtotime($datetime2 ) - strtotime( $datetime1 ) ) / 86400 ; //this will yield the resultant difference in days 

    Преобразование даты DateTime в тип даты Unix и вычитание одного из другого: Формат -> («U») – это место, где преобразуется DateTime.

     $datetime1 = date_create('19.03.2010'); $datetime2 = date_create('22.04.2010'); $intervalInDays = ($datetime2->format("U") - $datetime1->format("U"))/(3600 * 24); 

    Не уверен, что это безопасный Y2K38, но это один из простейших методов обхода date_diff.