Sar*_* B. 119 php compare date
如何比较PHP中的两个日期?
在数据库中,日期看起来像2011-10-2.
如果我想将今天的日期与数据库中的日期进行比较,看看哪一个更大,我该怎么做?
我试过这个,
$today = date("Y-m-d");
$expire = $row->expireDate //from db
if($today < $expireDate) { //do something; }
Run Code Online (Sandbox Code Playgroud)
但它并没有真正起作用.这样做的另一种方式是什么?
更新:我知道这篇文章有点旧,但我只是想提一下碳,这是一个与laravel一起使用的类,但可以与经典的PHP一起使用,它确实有日期的奇迹.看看吧:碳
Hug*_*oto 212
如果您的所有日期都在1970年1月1日之后,您可以使用以下内容:
$today = date("Y-m-d");
$expire = $row->expireDate; //from database
$today_time = strtotime($today);
$expire_time = strtotime($expire);
if ($expire_time < $today_time) { /* do Something */ }
Run Code Online (Sandbox Code Playgroud)
如果您使用的是PHP 5> = 5.2.0,则可以使用DateTime类:
$today_dt = new DateTime($today);
$expire_dt = new DateTime($expire);
if ($expire_dt < $today_dt) { /* Do something */ }
Run Code Online (Sandbox Code Playgroud)
或者沿着这些方向的东西.
Mat*_*hew 75
在数据库中,日期看起来像2011-10-2
将其存储在YYYY-MM-DD中,然后字符串比较将起作用,因为'1'>'0'等.
d.r*_*aev 21
只是为了赞美已经给出的答案,请参阅以下示例:
$today = new DateTime('');
$expireDate = new DateTime($row->expireDate); //from database
if($today->format("Y-m-d") < $expireDate->format("Y-m-d")) {
//do something;
}
Run Code Online (Sandbox Code Playgroud)
更新: 或简单使用old-school date()函数:
if(date('Y-m-d') < date('Y-m-d', strtotime($expire_date))){
//echo not yet expired!
}
Run Code Online (Sandbox Code Playgroud)
我不会用PHP做这件事.数据库应该知道今天是哪一天.(例如使用MySQL-> NOW()),因此在Query中进行比较并返回结果非常容易,取决于使用的Date-Types,没有任何问题
SELECT IF(expireDate < NOW(),TRUE,FALSE) as isExpired FROM tableName
Run Code Online (Sandbox Code Playgroud)
$today = date('Y-m-d');//Y-m-d H:i:s
$expireDate = new DateTime($row->expireDate);// From db
$date1=date_create($today);
$date2=date_create($expireDate->format('Y-m-d'));
$diff=date_diff($date1,$date2);
//echo $timeDiff;
if($diff->days >= 30){
echo "Expired.";
}else{
echo "Not expired.";
}
Run Code Online (Sandbox Code Playgroud)