Проверьте, прошла ли данная дата - PullRequest
10 голосов
/ 21 июля 2010

У меня есть недельный календарь с событиями, и я хочу, чтобы пользователи не могли добавлять события за прошедшие дни. Поэтому я пытаюсь использовать такую ​​функцию:

if( strtotime($this->day) < time() ){ // date format is YYYY-MM-DD
// date is past 
}else{   
// date is not past
}

Кажется, он работает нормально, за исключением того, что он рассматривает сегодняшнюю дату как прошедший день. Что я делаю не так?

Ответы [ 3 ]

11 голосов
/ 21 июля 2010

проще ->

if(strtotime($this->day) < strtotime(date('Y-m-d')))
{
   ...
}
else
{
   ...
}
10 голосов
/ 21 июля 2010

Временная метка никогда не содержит только дату, но всегда равна текущей секунде.strtotime($this->day) вернет сегодняшнюю дату в 0:00, а вы сравниваете ее с сегодняшним днем, скажем, 11:12.

. Вы можете использовать strtotime("$this->day 12:59:59pm"); (если формат $this->day позволяетчто) или используйте завтра метку времени.

0 голосов
/ 21 июля 2010
if(strtotime($this->day) < mktime(0, 0, 0)){
    // date is past
} else {
    // date is not past
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...