Confronto tra due date

Come posso confrontare due date in PHP?

Nel database, la data sembra 2011-10-2.

Se volessi confrontare la data odierna con quella del database per vedere quale è maggiore, come dovrei farlo?

Ho provato questo,

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

ma in realtà non funziona in questo modo. Qual è un altro modo di farlo?

Aggiornamento: So che questo post è un po 'vecchio ma volevo solo menzionare il carbonio, che è una class utilizzata con laravel ma può essere usato con php classico e fa miracoli con le date. dai un'occhiata: Carbon

nel database la data assomiglia a questo 2011-10-2

Memorizzalo in AAAA-MM-GG e quindi il confronto delle stringhe functionrà perché '1'> '0', ecc.

Se tutte le tue date sono posteriori al 1 ° gennaio 1970, potresti usare qualcosa come:

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

Se si utilizza PHP 5> = 5.2.0, è ansible utilizzare la class DateTime:

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

O qualcosa del genere.

Giusto per complimentarmi con le risposte già date, vedi il seguente esempio:

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

Aggiornamento: O semplice uso della function old-school date () :

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

Non lo farei con PHP. Un database dovrebbe sapere, che giorno è oggi. (Usa MySQL-> NOW () per esempio), quindi sarà molto facile comparare all'interno della Query e restituire il risultato, senza problemi a seconda dei Date-types usati

 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."; } 

Questo potrebbe aiutare se stai pensando di utilizzare DateTimes.

Puoi usare il semplice PHP per confrontare le date:

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

Questo ti darà vero o falso.

Puoi controllare le esercitazioni per altri esempi. Per favore clicca qui

Ho avuto anche questo problema e lo risolvo con:

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

Ho trovato la risposta sul blog VipDomaine ed è semplice come:

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

E avrai i giorni tra le 2 date.

Semplicemente puoi controllare ..

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

ma entrambe le date devono essere nello stesso formato

Ymd o dmY

eccetera.

  while ($row=mysql_fetch_arrays($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 }