2013-10-14 58 views
0

我想将下面的MYSQL SELECT代码转换为PHP代码:DATEDIFF(date, NOW()) <= 31 basicaly如果日期小于或等于31天做休息。DATEDIFF创建函数为php代码

到目前为止,我所做的是以下

$today = new DateTime('now'); 
$date = $row['date']; 
$diff = date_diff($date,$today); 

,比里面,如果周期我具备的条件:if ($diff <= 31)

我的SQL日期列仅指定一个日期没有日期时间我得到下面的错误,我想知道如何才能得到计算的日期只有

Warning: date_diff() expects parameter 1 to be DateTime, string given in D:\xampp\htdocs\website\c.php on line 299 
bool(false) 
Warning: date_diff() expects parameter 1 to be DateTime, string given in D:\xampp\htdocs\website\c.php on line 299 
bool(false) 

使得答案吼叫不是窝窝的信息rking是在我的SQL查询中,我使用DATE_FORMAT(date,'%d %b %Y') as date

预格式化日期任何帮助将非常受欢迎。谢谢!

+2

'$ row ['date']'的值是多少? – PlantTheIdea

+0

字符串(11)“2013年9月4日”字符串(11)“2013年12月12日”字符串(11)“2013年12月12日” –

回答

2

您需要将数据库中的数据,你就可以做date_diff()之前转换为DateTime对象以及天。

$today = new DateTime('now'); 
$date = new DateTime($row['date']); 
$diff = date_diff($date,$today); 

现在意识到自从$diffDateInterval对象,你只在乎天组件,您可以评估这样的:

if ($date->days <= 31) { 
    // do something 
} 
+0

看起来很有趣的解决方案,但查询选择日期后, 'date']字符串(11)“2013年9月4日”字符串(11)“2013年12月12日”与DATE_FORMAT(日期,'%d%b%Y') –

+1

DateTime构造函数不直接接受该日期格式。你有几个选择。您可以从查询中删除'DATE_FORMAT'。您可以更改查询中的DATE_FORMAT以匹配直接支持的其中一个 - 请参阅http://www.php.net/manual/en/datetime.formats.date.php链接。您可以使用'$ date = DateTime :: createFromFormat('d M Y',$ row ['date'])'来创建DateTime对象进行比较。 –

1

尝试:

$today = new DateTime('now'); 
$date = new DateTime($row['date']); 
$diff = $date->diff($today)->days; 

date_diff预计这两个参数是datetime对象。那就是它抱怨的。 date_diff或日期时间:: DIFF返回DateInterval,你可以从几天成员变量

0

这里的算法:

$then = new DateTime('2010-05-30');//example, you could use $row['date'] 
    $now = new DateTime();//now 
    $delta = $now->diff($then); 

    $data = array(
     'year' => $delta->y, 
     'month' => $delta->m, 
     'day' => $delta->d, 
     'hour' => $delta->h, 
     'minute' => $delta->i, 
     'second' => $delta->s 
    ); 

    //now 
    if($data['day'] <= 31) 
    { 
     //do the stuff 
    } 
+0

$ days代码上的gettin错误:注意:未定义的变量:D:\ xampp \ htdocs \ website \ c.php中的第296行 注意:未定义的变量:D:\ xampp \ htdocs \ website \ c中的月份。 296行上的D:\ xampp \ htdocs \ website \ c.php 错误信息:$ days = floor(($ diff - $ years * 365 * 60 * 60 * 24 - $ months * 30 * 60 * 60 * 24)/(60 * 60 * 24)); //计算 –

+0

@JohnSiniger,对不起,我编辑了代码。 :) – user2877011

+0

$天的结果是浮动(0)浮动(0)浮动(0) –