Рассчитать дни между датами, но показать отрицательный PHP

1

Я знаю, как рассчитать количество дней между двумя датами, как показано ниже, но как я могу вернуть разницу в качестве отрицательного числа, если это было в прошлом?

Это то, что я использую:

$today = new DateTime('now'); // today is 2015-09-02

$date1 = new DateTime("2015-08-13"); // 20 days ago

$diff = $today->diff($date1)->format("%a");

echo "diff is $diff"; // shows 20 but I want it to return -20

Я попытался изменить переменные, но, похоже, он не заботится о заказе.

  • 0
    а как насчет того, чтобы сделать то же самое? Или класс DateTime для вас обязателен?
  • 0
    Люди должны читать документацию PHP. php.net/manual/en/datetime.diff.php . Это довольно хорошо задокументировано.
Показать ещё 3 комментария
Теги:
datetime
date

2 ответа

3
Лучший ответ

DateInterval имеет свойство invert которое указывает, являются ли они положительными или отрицательными.

Вы можете вывести его как

$interval->format("%r%a");

r означает

Знак "-", когда отрицательный, пустой, когда положительный

См. DateInterval::format docs.

  • 0
    Я нашел "% R" в примерах, но ... где вы обнаружили, что "% r" возвращается пустым, когда положительный? Не могу найти это.
  • 1
    php.net/manual/en/dateinterval.format.php
0
$today = new DateTime('now'); // today is 2015-09-02

$date1 = new DateTime("2015-08-13"); // 20 days ago

$diff = $today->diff($date1)->format("%r%a");

Выход будет -20. Также вы можете поменять даты, подобные следующему примеру. Выход будет 20.

$today = new DateTime('now'); // today is 2015-09-02

$date1 = new DateTime("2015-08-13"); // 20 days ago

$diff = $date->diff($today)->format("%r%a");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню