PHP дней осталось и прошло с даты - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу получить дату регистрации пользователя, сосчитать дни с момента регистрации и показать максимальное количество дней, оставшихся до данных дней, и показать сообщение после окончания периода.

То, что я получил до сих пор, работает:

$regDatestr = '2020-04-09 19:38:10';
$regDate = strtotime($regDatestr);
$regSince = time() - $regDate;
$days = round ($regSince / ( 60 * 60 * 24 ));
$maxDays = 20;
$maxDaysstr = strtotime("-$maxDays days");
$maxReg = ($regSince + $maxDaysstr); 
$daysleft =  time() - $maxReg;
$restDays = round ($daysleft / ( 60 * 60 * 24 ));

if ($regdate <= $maxDaysstr) : 
    echo 'period ended'
else : 
    echo 'Registered since' . $days . ' .days . Rest days ' . $restDays . '
endif;

$ дней и дней дает мне правильные дни. Но срок не заканчивается точно через 20 дней.

Мне нужно максимум 20 дней с даты регистрации. Поэтому, когда

'2020-04-09 19:38:10';

плюс 20 дней должны завершить период на

'2020-04-29 19:38:10';

, но, похоже, мое условие if не работает должным образом. Так что я получаю "Зарегистрирован с 21 дня. Остальные 0".

Почему это так?

1 Ответ

0 голосов
/ 17 апреля 2020

Поскольку у вас есть опечатка с именами переменных

if ($regdate <= $maxDaysstr) 

должно быть

if ($regDate <= $maxDaysstr)

, а ваш код может быть короче

$regDatestr = '2020-04-01 19:38:10';
$regDate = new DateTime($regDatestr);

$diffToday = $regDate->diff(new DateTime());

$maxDays = 10;
$diffMax = $regDate->diff(new DateTime("-$maxDays days"));

if ($diffMax->invert == 0) :
    echo 'period ended';
else :
    echo 'Registered since ' . $diffToday->days . ' .days . Rest days ' . $diffMax->days;
endif;
...