, когда пользователь логины на свой счет, я хочу, чтобы вычислить, так как, сколько дней подряд этот пользователь loged вСчетные дней подряд
Для этого я хранить метку времени в $loginSince
и расчета последовательных дней с этой формулой:
$consecutiveDays = (int)((time() - $loginSince)/DAY) + 1;
проблема заключается в том, что это считается по секундам, а это означает:
- , если пользователь входит в 17:00 (5 вечера) и на следующий день в 15:00 (3 часа) счетчик по-прежнему 1
- если пользователь входит в систему в 8:00 (8 утра), а на следующий день в 20:00 (8 вечера) счетчик был сброшен (если разрыв между двумя входами больше 24 часов и снова 1
Я хотел бы получить реальные consectuve дней, то есть, если пользователь входит в систему, как в следующих случаях:
- День 1: 00:01
- День 2: 23:59
- 3-й день: 15:00
Счетчик должен сказать 3, потому что он вошел в систему в три консективных дня. С моей текущей формулой это не будет работать, так как счетчик будет сброшен между 1 и 2 днями.
Может кто-нибудь дать совет, как с этим справиться.
магазин штамп времени как фиксированный час/мин/второй в этот день. например полночь. Тогда математика будет работать. –
Когда сервер пользователя регистрируется, увеличивайте счетчик. и в состоянии проверки просто проверьте, что счетчик должен быть «больше или равен» не разнице между первым и последним днем (предположим, что этот день, когда пользователь в настоящее время регистрирует n сейчас). Для этого вы можете хранить «одну переменную» за первый день. Разница не в днях –
@EdHeal Мое решение основано на вашей идее. В эти дни я создал две «DateTime's of Midnight» и построил их «интервал». Спасибо. Вы хотите опубликовать свой комментарий в качестве ответа, чтобы я мог принять его, чтобы показать другим, что было полезно для меня? – bish