比较两个date

我如何比较PHP中的两个date?

在数据库中,date看起来像2011-10-2。

如果我想将今天的date与数据库中的date进行比较,看看哪个date更长,我该怎么做呢?

我试过这个,

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

但它并不是真的那样工作。 什么是另一种方式呢?

更新:我知道这篇文章是有点老,但我只是想提到碳,这是一个类与laravel使用,但可以用于经典的PHP,它与date奇迹。 检查一下: 碳

在数据库中date看起来像这个2011-10-2

将它存储在YYYY-MM-DD中,然后string比较可以工作,因为'1'>'0'等

如果你所有的date都在1970年1月1日之后,你可以使用如下的东西:

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

如果您使用PHP 5> = 5.2.0,则可以使用DateTime类:

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

或者沿着这些线路。

只是为了赞扬已经给出的答案,请看下面的例子:

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

更新:或者简单的使用old-school的date()函数:

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

我不会用PHP做这个。 一个数据库应该知道今天是星期几(例如使用MySQL-> NOW()),所以在Query中进行比较将很容易,并返回结果,根据所使用的datetypes

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

如果您正在考虑使用DateTime, 这可能会有所帮助。

您可以使用简单的PHP来比较date:

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

这会给你真假。

你可以查看教程了解更多的例子。 请点击这里 。

我也有这个问题,我解决它:

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

在VipDomaine博客上find答案, 就像下面这样简单:

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

你会得到两个date之间的日子。

只要你可以检查..

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

但是这两个date必须是相同的格式

Ymd或者dmY

等等

  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 }