2010-07-21 2 views
10

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

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

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

ответ

10

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

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

+1

В качестве альтернативы, используйте 'StrToTime ($ this-> день) <время() - 24 * 60 * 60'. – user11977

+0

Спасибо, человек! Этот способ работает отлично! – Luciano

11

Simpler ->

if(strtotime($this->day) < strtotime(date('Y-m-d'))) 
{ 
    ... 
} 
else 
{ 
    ... 
} 
+0

Спасибо вам тоже! Я не собирался устанавливать функцию даты вовремя()! – Luciano

+0

strtotime function ... просто сделал опечатку .. извините –

+0

, если вы хотите также учитывать секунды, добавить в H: i: s 'strtotime (date ('Y-m-d H: i: s'))' – justinl

0
if(strtotime($this->day) < mktime(0, 0, 0)){ 
    // date is past 
} else { 
    // date is not past 
} 
Смежные вопросы