2015-09-18 13 views
5

请帮我的代码错了什么。它总是表明今天比01/02/2016更大?其中,在2016年大于2015年PHP的日期时间比今天更长

<?php 
$date_now = date("m/d/Y"); 

$date=date_create("01/02/2016"); 
$date_convert = date_format($date,"m/d/Y"); 

if ($date_now > $date_convert) { 
     echo 'greater than'; 
    }else{ 
     echo 'Less than'; 
    } 

P.S:2016年1月2日从我的数据库

+0

使用时间戳来比较日期。字符串是因为你已经看到,任务非常不可靠。 –

回答

20

未来您是不是比较日期。您正在比较字符串。在字符串比较的世界中,'09/17/2015'> '01/02/2016'因为'09'>'01'。您需要将日期以可比较的字符串格式进行比较或比较可比较的DateTime对象。

<?php 
$date_now = date("Y-m-d"); // this format is string comparable 

if ($date_now > '2016-01-02') { 
     echo 'greater than'; 
    }else{ 
     echo 'Less than'; 
    } 

Demo

或者

<?php 
$date_now = new DateTime(); 
$date2 = new DateTime("01/02/2016"); 

if ($date_now > $date2) { 
     echo 'greater than'; 
    }else{ 
     echo 'Less than'; 
    } 

Demo

+0

怎么样?对不起,我没有线索,是我的日期转换错了吗? – Nixxx27

+0

谢谢!它解决了我的问题。 – Nixxx27

+0

$ date_now = new DateTime(); $ sql =“UPDATE jrf_tbl SET strifoverdue ='no'WHERE strduedate>'$ date_now'”; – Nixxx27