я имею следующий код:PHP разница Дата
$dStart = new DateTime('2013-03-15');
$dEnd = new DateTime('2013-04-01');
$dDiff = $dStart->diff($dEnd);
echo $dDiff->days;
Я не знаю, почему я получаю 6015, как результат.
я имею следующий код:PHP разница Дата
$dStart = new DateTime('2013-03-15');
$dEnd = new DateTime('2013-04-01');
$dDiff = $dStart->diff($dEnd);
echo $dDiff->days;
Я не знаю, почему я получаю 6015, как результат.
Попробуйте как
$dStart = strtotime('2013-03-15');
$dEnd = strtotime('2013-04-01');
$dDiff = $dEnd - $dStart;
echo date('H:i:s',$dDiff);
или в соответствии с вашим кодом попробовать с
$dDiff = $dStart->diff($dEnd);
$date->format('d',$dDiff);
echo $dDiff->days;
если вы хотите разница в днях попробовать с этим также
echo floor($dDiff/(60*60*24));
То, что возвращается «01:01:00», я ожидаю получить разницу в днях между 2 датами – carlosduarte
попробуйте отредактировать .. ?? plz – Gautam3164
Получил это .. @ carlosduarte .. ?? – Gautam3164
Попробуйте this-
$dStart = new DateTime('2013-03-15');
$dEnd = new DateTime('2013-04-01');
$dDiff = $dStart->diff($dEnd);
echo $dDiff->format('%d days')
Проверить PHP
Пожалуйста, проверьте demo link
Он возвращает +6015 дней. Также он должен быть ошибкой версии PHP – carlosduarte
@carlosduarte: обновленная публикация и добавленная ссылка для phpfiddle: http://phpfiddle.org/main/code/7dq-mb7 –
В этом примере вы добавляете любую дату ...Скажем, смените его на 2015 год, он возвращается 17 дней всегда – utkarshk
использование этого
$datetime1 = date_create('2013-03-15');
$datetime2 = date_create('2013-04-01');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
Он возвращает +6015 дней может быть ошибкой php? Версия PHP 5.3.1 – carlosduarte
может быть причиной ошибки для вашей версии php. Я тестировал и возвращал +17 дней. –
Я не могу понять, что происходит с PHP, если я эхо (1363305600 - 1364857200)/(60 * 60 * 24) он возвращает -A.9583333333333 – carlosduarte
Я предпочитаю что-то вроде:
function days_diff($first_date, $second_date)
{
$later = new DateTime($second_date);
$then = new DateTime($first_date);
return $later->diff($then)->format('a');
}
Да, это единственное решение, которое работает на PHP версии 5.3.1 – carlosduarte
Это не сработает, если разница составляет более 1 месяца. DateInterval перевернется и увеличит 'm', сбросив' d' обратно на 0. В настоящее время вы _must_ используете '$ interval-> format ('a')', чтобы получить общее количество дней между двумя днями (если вы ожидаете диапазон когда-либо выше 1 месяца) –
@ColinMorelli Спасибо! Я применил редактирование. Я использовал эту функцию без проблем, но мое дело всегда было в течение месяца. –
я получил те же 6015 дней на PHP 5.3.0 и нашел решение с использованием var_dump()
. Мой точный код здесь:
$timestring = "Thu, 13 Jun 2013 14:05:59 GMT";
date_default_timezone_set('GMT');
$date = DateTime::createFromFormat('D, d M Y G:i:s T', $timeString);
$nowdate = new DateTime("now");
$interval = $date->diff($nowdate);
Теперь, если я делаю var_dump($interval)
, результат:
object(DateInterval)#5 (8) {
["y"]=>
int(0)
["m"]=>
int(0)
["d"]=>
int(0)
["h"]=>
int(19)
["i"]=>
int(45)
["s"]=>
int(33)
["invert"]=>
int(0)
["days"]=>
int(6015)
}
Так часы (h
), минуты (i
) и секунды (s
) установлены правильно, но есть еще одно свойство days
, которое остается постоянным на 6015, и это то, что другие получают как ошибку. Ну, я не могу понять, где он получает эту ценность. Опять же, согласно руководству PHP для DateInterval
по адресу http://www.php.net/manual/en/class.dateinterval.php, я попытался получить к ним доступ к свойствам объекта, и все прошло отлично.
Таким образом, я получаю точный результат по:
echo (string) $interval->d." days ago";
Что произойдет, если смещение даты по одному? Например, «2013-03-16» и «2013-04-02». – cwallenpoole
Если я установил 2013-03-16 и 2013-04-02, я получаю то же значение 6015 – carlosduarte
Я нашел сообщение об ошибке № 51184 https://bugs.php.net/bug.php?id=51184 – carlosduarte