Проверьте, не прошла ли данная дата
У меня есть недельный календарь, который содержит события, и хочу, чтобы пользователи не могли добавлять события за последние дни. Поэтому я пытаюсь использовать такую функцию:
if( strtotime($this->day) < time() ){ // date format is YYYY-MM-DD
// date is past
}else{
// date is not past
}
Кажется, все работает отлично, за исключением того, что сегодня он рассматривает дату как прошлый день. Что я делаю неправильно?
Ответы
Ответ 1
Временная метка никогда не содержит только дату, но всегда до текущей секунды. strtotime($this->day)
собирается возвратить сегодняшнюю дату в 0:00
, в то время как вы сравниваете ее сейчас, скажем, 11:12
.
Вы можете использовать strtotime("$this->day 12:59:59pm");
(если для этого подходит формат $this->day
) или использовать метку времени завтра.
Ответ 2
Упрощение →
if(strtotime($this->day) < strtotime(date('Y-m-d')))
{
...
}
else
{
...
}
Ответ 3
if(strtotime($this->day) < mktime(0, 0, 0)){
// date is past
} else {
// date is not past
}