PHP date_diff返回异常警告


PHP date_diff returns unusual warning

有很多关于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...
如您所见,$today和$selectDay都是日期。有什么建议吗?注意:我有PHP版本5.3

错误信息很清楚。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 );

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

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

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

顺便说一下

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

等价于date('d-m-Y')

在传入date_diff()函数参数之前使用date_create()函数

$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) );