PHP date_diff返回异常警告

时间:2014-08-07 12:51:38

标签: php datetime date-math

date_diff PHP函数上提出了许多问题。但我觉得有点不同,因为我得到了一个相当不寻常的结果。以下是我的代码:

$today = date( 'd-m-Y', strtotime( "now" ) );
$selectDay = date( 'd-m-Y', strtotime( $row->BOOKING_DATE ));
$interval = date_diff( $selectDay, $today );

结果我得到了:

Warning: date_diff() expects parameter 1 to be DateTime, string given in...

如你所见$ $和$ selectDay都是日期。有什么建议? 注意:我有PHP版本5.3

3 个答案:

答案 0 :(得分:5)

错误消息很明确。 date_diff()期望DateTime()个对象,但您传递的是字符串。

$today     = new DateTime();
$selectDay = new DateTime($row->BOOKING_DATE);
$interval  = date_diff( $selectDay, $today );

或者:

$today     = new date_create();
$selectDay = new date_create($row->BOOKING_DATE);
$interval  = date_diff( $selectDay, $today );

或者:

$today     = new DateTime();
$selectDay = new DateTime($row->BOOKING_DATE);
$interval  = $today->diff( $selectDay );

答案 1 :(得分:3)

date以字符串的形式返回UNIX时间戳的文本表示。

date_diff需要一个DateTime对象,如下所示:

http://php.net/manual/en/class.datetime.php

顺便提及,

date( 'd-m-Y', strtotime( "now" ) )

相当于date('d-m-Y')

答案 2 :(得分:0)

在传递date_create()函数参数

之前使用date_diff()函数
$today = date( 'd-m-Y', strtotime( "now" ) );
$selectDay = date( 'd-m-Y', strtotime( $row->BOOKING_DATE ));
$interval = date_diff( date_create($selectDay), date_create($today) );