php `strtotime` переменная не возвращает отрицательное число? - PullRequest
1 голос
/ 01 марта 2012

Нужно сформировать переменную в виде количества дней между двумя датами.

$dayDiff = round((strtotime('2012-02-18') - strtotime('2012-02-22')) / 86400);

Выше отображается «-4», что правильно!

$newDate= date('Y-m-d', strtotime($dayDiff . " day"));

В приведенном выше примере $dayDiff считается положительным числом и выдает «2012-02-25» вместо желаемого результата «2012-02-14». Есть идеи?

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

Будет выведено:

$dayDiff = round((strtotime('2012-02-18') - strtotime('2012-02-22')) / 86400);
echo $newDate= date('Y-m-d', strtotime($dayDiff . " day", strtotime('2012-02-18')));

или:

$firstDate = strtotime('2012-02-18');
$dayDiff = round(($firstDate - strtotime('2012-02-22')) / 86400);
echo $newDate= date('Y-m-d', strtotime($dayDiff . " day", $firstDate));

strtotime будет работать с текущей отметки времени, а не с 18-го, поэтому, если вы выводите:echo date('Y-m-d', strtotime('now')); будет выводить сегодняшнюю дату, echo date('Y-m-d', strtotime('now - 4 days')); 25, а echo date('Y-m-d', strtotime('2012-02-18 - 4 days')); 18-й -4-й день будет выводить 14.

больше информации о strtotime: http://php.net/manual/en/function.strtotime.php

0 голосов
/ 01 марта 2012

Вы должны найти это полезным:

http://www.brightcherry.co.uk/scribbles/php-adding-and-subtracting-dates/

...