比较两个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 }