Comparando dos fechas

¿Cómo puedo comparar dos fechas en PHP?

En la base de datos, la fecha se ve como 2011-10-2.

Si quisiera comparar la fecha de hoy con la fecha en la base de datos para ver cuál es mayor, ¿cómo lo haría?

Intenté esto,

$today = date("Ymd"); $expire = $row->expireDate //from db if($today < $expireDate) { //do something; } 

pero en realidad no funciona de esa manera. ¿Cuál es otra forma de hacerlo?

Actualización: Sé que esta publicación es un poco antigua, pero solo quería mencionar carbono, que es una clase que se usa con laravel pero que se puede usar con php clásico y que hace maravillas con las fechas. échale un vistazo: Carbono

en la base de datos, la fecha se ve así 2011-10-2

Guárdelo en AAAA-MM-DD y luego la comparación de cadenas funcionará porque ‘1’> ‘0’, etc.

Si todas sus fechas son posteriores al 1 de enero de 1970, podría usar algo como:

 $today = date("Ymd"); $expire = $row->expireDate //from db $today_time = strtotime($today); $expire_time = strtotime($expire); if ($expire_time < $today_time) { /* do Something */ } 

Si está utilizando PHP 5> = 5.2.0, puede usar la clase DateTime:

 $today_dt = new DateTime($today); $expire_dt = new DateTime($expire); if ($expire_dt < $today_dt) { /* Do something */ } 

O algo por el estilo

Para complementar las respuestas ya dadas, vea el siguiente ejemplo:

 $today = new DateTime(''); $expireDate = new DateTime( $row->expireDate) //from db if($today->format("Ymd") < $expireDate->format("Ymd")) { //do something; } 

Actualización: O simple uso de la función old-school date () :

 if(date('Ym-d') < date('Ym-d', strtotime($expire_date)) ){ //echo not yet expired! } 

No haría esto con PHP. Una base de datos debería saber qué día es hoy (use MySQL-> AHORA () por ejemplo), por lo que será muy fácil de comparar dentro de la consulta y devolver el resultado, sin ningún problema según los tipos de fecha utilizados.

 SELECT IF(expireDate < NOW(),TRUE,FALSE) as isExpired FROM tableName 
 $today_date=date("Ymd"); $entered_date=$_POST['date']; $dateTimestamp1 = strtotime($today_date); $dateTimestamp2 = strtotime($entered_date); $diff= $dateTimestamp1-$dateTimestamp2; //echo $diff; if ($diff<=0) { echo "Enter a valid date"; } 
 $today = date('Ym-d');//Ymd H:i:s $expireDate = new DateTime($row->expireDate);// From db $date1=date_create($today); $date2=date_create($expireDate->format('Ym-d')); $diff=date_diff($date1,$date2); $timeDiff = $diff->format("%R%a days"); echo $timeDiff; if($timeDiff < 0){ echo "Expired."; }else{ echo "Not expired."; } 

Esto podría ser útil si está considerando usar DateTimes.

Puede usar PHP simple para comparar fechas:

 $date = new simpleDate(); echo $date->now()->compare($expire_date)->isBeforeOrEqual(); 

Esto te dará verdadero o falso.

Puede consultar los tutoriales para obtener más ejemplos. Por favor haga clic aquí .

Yo también tuve ese problema y lo resuelvo de la siguiente manera:

 $today = date("Ymd"); $expire = str_replace('-', '', $row->expireDate); //from db if(($today - $expire) > $NUMBER_OF_DAYS) { //do something; } 

Encontré la respuesta en el blog VipDomaine y es tan simple como:

 strtotime(date("Y"."-01-01")) -strtotime($newdate))/86400 

Y obtendrás los días entre las 2 fechas.

Simplemente puedes comprobar …

 if ($startdate < $date) {// do something} if ($startdate > $date) {// do something} 

pero ambas fechas deben estar en el mismo formato

Ymd o dmY

etc.

  while ($row=mysql_fetch_array($result)) { $orderdate=explode('-',$row['alertdate']); $date=$orderdate[0]; $month=$orderdate[1]; $year=$orderdate[2]; if((date(Y)>=$year) and (date(m)>=$month) and (date(d)>=$date)) { //write your true code } else { //write your false code } 

Aquí hay una manera de cómo obtener la diferencia entre dos fechas en minutos.

 // set dates $date_compare1= date("dmY h:i:sa", strtotime($date1)); // date now $date_compare2= date("dmY h:i:sa", strtotime($date2)); // calculate the difference $difference = strtotime($date_compare1) - strtotime($date_compare2); $difference_in_minutes = $difference / 60; echo $difference_in_minutes;