这是我的代码:
$logdate = Input::get('logdate');
$enddate = Input::get('enddate');
//Cast the dates to yyyy-dd-mm format for comparison
$startdt = date('Y-d-m',strtotime($logdate));
$enddt = date('Y-d-m',strtotime($enddate));
//Cast the dates into datetime objects
$date1 = new DateTime($startdt);
$date2 = new DateTime($enddt);
//Calculate the difference between the 2 datetime objects
$diff = $date1->diff($date2, true);
//cast logdate into correct format for entry in the database
$newlogdate = strtotime($logdate);
$formatlogdate = date('Y-d-m',$newlogdate);
我用它来获取间隔中的天数:
Log::info(intval($diff->days));
每当我编写的代码在同一个月内涉及 12 天或更少的差异时,这里的代码都可以正常工作,但一旦超过 12 天,或者一旦我尝试计算 2 个月之间的差异,它就会失控并给我结果 16000+
例如,根据此代码,2015 年 4 月 26 日和 2015 年 5 月 2 日之间的天数差异为 16557 天,我不知道他们是如何得出这个数字的,但大约是 45 年,结果是总是 16000 + 无论我选择哪个日期,因为它们在 12 天的单月半径之外
最佳答案
当你在做 - date('Y-d-m',strtotime($logdate));
它返回 - 1970-01-01
两个日期.
/
正在制造问题。
试试这个-
$log = '26/04/2015';
$end = '02/05/2015';
$date1 = new DateTime(str_replace('/', '-', $log));
$date2 = new DateTime(str_replace('/', '-', $end));
$diff = $date1->diff($date2, true);
echo $diff->days;
输出
6
关于php date->diff() 返回无意义的金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30322990/