0

有很多关于date_diffPHP 函数的问题。但我的似乎有点不同,因为我得到了一个相当不寻常的结果。下面是我的代码:

$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 版

4

3 回答 3

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 );
于 2014-08-07T12:53:37.837 回答
3

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

date_diff需要一个DateTime对象,如此处所述:

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

顺便,

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

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

于 2014-08-07T12:54:07.963 回答
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) );
于 2014-08-07T12:53:57.070 回答