php比较两个日期之间的差异

php比较两个日期之间的差异,php,date,Php,Date,我试图返回两个日期之间的差异,我根据 我的问题?我得到完全错误的结果返回,下面的代码返回30年,0个月,9天,当它显然应该只有7天或1周 代码如下: date_default_timezone_set('America/Los_Angeles'); $pickupDate = '2016-10-13'; $returnDate = 2016-10-20; $diff = abs(strtotime($pickupDate) - strtotime($retu

我试图返回两个日期之间的差异,我根据

我的问题?我得到完全错误的结果返回,下面的代码返回30年,0个月,9天,当它显然应该只有7天或1周

代码如下:

    date_default_timezone_set('America/Los_Angeles');

    $pickupDate = '2016-10-13';
    $returnDate  = 2016-10-20;

    $diff = abs(strtotime($pickupDate) - strtotime($returnDate));
    $years = floor($diff / (365*60*60*24));
    $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
    $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

    printf("%d years, %d months, %d days\n", $years, $months, $days); 

首先,代码没有考虑闰年、月长变化等因素

php中实际上有一个函数用于此,请查看链接了解详细信息:,并举一个例子:

$datetime1 = new DateTime('2016-10-13');
$datetime2 = new DateTime('2016-10-20');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%y years, %m months, %d days');

首先,代码没有考虑闰年、不同的月长等等

php中实际上有一个函数用于此,请查看链接了解详细信息:,并举一个例子:

$datetime1 = new DateTime('2016-10-13');
$datetime2 = new DateTime('2016-10-20');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%y years, %m months, %d days');

试试这个,它会给你不同的日期,时间,分钟,小时,秒,等等

date_default_timezone_set('America/Los_Angeles');
$now = '2016-10-13';
$returnDate  = '2016-10-20';
$start = date_create($returnDate);
$end = date_create($now);
$diff=date_diff($end,$start);
print_r($diff);

试试这个,它会给你不同的日期、时间、分钟、小时、秒等等

date_default_timezone_set('America/Los_Angeles');
$now = '2016-10-13';
$returnDate  = '2016-10-20';
$start = date_create($returnDate);
$end = date_create($now);
$diff=date_diff($end,$start);
print_r($diff);

来自手册

 $pickupDate = new DateTime('2016-10-13');
 $returnDate = new DateTime('2016-10-20');
 $interval = $pickupDate->diff($returnDate);
 echo $interval->format('%R%a days');
手册中的

 $pickupDate = new DateTime('2016-10-13');
 $returnDate = new DateTime('2016-10-20');
 $interval = $pickupDate->diff($returnDate);
 echo $interval->format('%R%a days');

谢谢


谢谢

只需在返回日期中添加单个报价,如
$returnDate='2016-10-20'date\u diff()
函数

$daysdiffernce = date_diff(date_create('2016-10-13'),date_create('2016-10-20'));
echo $daysdiffernce->format("%R%a days");

这将给出准确的+7天回答

只需在返回日期中添加单个报价,如
$returnDate='2016-10-20'date\u diff()
函数

$daysdiffernce = date_diff(date_create('2016-10-13'),date_create('2016-10-20'));
echo $daysdiffernce->format("%R%a days");

这将给出准确的+7天答案

使用PHP内置的日期函数,不要做天真的小时*天计算。使用PHP内置的日期函数,不要做天真的小时*天计算。工作非常有魅力;每天你都会学到一些新的东西
date\u diff()
Thank you工作得很有魅力;每天你都会学到新的东西
date\u diff()
谢谢