Разница между двумя датами в днях с использованием php

У меня проблема с моим скриптом, и я не понимаю, в чем проблема. Итак, у меня есть этот код:

 $i_now = strtotime(date('Y-m-d'));
 $i_date_last_bonus = strtotime($o_member->date_last_bonus);                
 $i_datediff = round(abs($i_now - $i_date_last_bonus) / 86400);
 print_r("Date Now :".date('Y-m-d'));
 print_r("Last Win :".$o_member->date_last_bonus);

Я получаю $i_datediff = 1 и не понимаю почему, потому что в print_r у меня есть Date Now :2015-12-04 и Last Win:2015-12-03 Можете ли вы помочь мне, где я делаю ошибку? Заранее спасибо и извините за мой английский


person Harea Costicla    schedule 04.12.2015    source источник
comment
Используйте класс DateTime и его различия › php.net/manual/en/datetime.diff.php   -  person Svetoslav    schedule 04.12.2015
comment
вы не пропустили второй параметр в напечатанных функциях date?   -  person Alex Blex    schedule 04.12.2015
comment
php.net/manual/en/datetime.diff.php   -  person Sougata Bose    schedule 04.12.2015
comment
Возможный дубликат Как рассчитать разницу между двумя датами, используя PHP?   -  person gpinkas    schedule 04.12.2015


Ответы (2)


В сутках 24 часа, в каждом часе 60 минут, в каждой минуте 60 секунд. Следовательно, в сутках 24*60*60 = 86400 секунд.

Теперь функция strtotime() анализирует текстовую дату и время на английском языке в отметку времени Unix (количество секунд с 00:00:00 по Гринвичу 1 января 1970 года). Означает, что он возвращает секунды.

Итак, i_now = 1449187200 и i_date_last_bonus = 1449100800 Разница 86400сек.

Теперь $i_datediff = round(abs($i_now - $i_date_last_bonus) / 86400); это перевод секунд в дни.

И разница 86400 / 86400 = 1 означает 1 день.

person AkshayP    schedule 04.12.2015

Этот результат верен, поскольку вы сначала получаете количество секунд между двумя датами, а затем делите его на количество секунд в 24 часах (86400), что в результате дает вам 1 (день).

person onerror    schedule 04.12.2015