2010-07-21 21 views
10

Tengo un calendario de semana que contiene eventos y deseo que los usuarios no puedan agregar eventos en los últimos días. Así que estoy Tring para utilizar una función como la que:Compruebe si una fecha determinada es anterior

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

Parece que funciona bien, excepto que se considere fecha de hoy como un día pasado. ¿Qué estoy haciendo mal?

Respuesta

10

Una marca de tiempo nunca contiene solo la fecha, pero siempre está abajo del segundo actual. strtotime($this->day) va a devolver la fecha de hoy al 0:00, mientras la compara con ahora, por ejemplo, 11:12.

Usted podría utilizar strtotime("$this->day 12:59:59pm"); (si el formato de $this->day permite por ello) o utilizar mañana marca de tiempo 's.

+1

Como alternativa, utilice 'strtotime ($ this-> día) user11977

+0

Gracias hombre! ¡De esta manera funciona bien! – Luciano

11

Más simple ->

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

¡Gracias también! ¡No estaba considerando establecer la función de fecha de hoy en el día()! – Luciano

+0

strtotime function ... acabo de hacer un error tipográfico ... lo siento –

+0

si quieres también dar cuenta de los segundos, agrega 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 
} 
Cuestiones relacionadas