php date->diff() 返回无意义的金额
php date->diff() returning nonsensical amounts
这是我的代码:
$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
您执行此操作的正确方法是:-
$log = '26/04/2015';
$end = '02/05/2015';
$date1 = \DateTime::createFromFormat('d/m/Y', $log);
$date2 = \DateTime::createFromFormat('d/m/Y', $end);
$diff = $date1->diff($date2, true);
echo $diff->days;
或尝试一下:
$datetime1 = strtotime("2011-10-10 10:00:00");
$datetime2 = strtotime("2011-10-10 10:45:00");
$interval = abs($datetime2 - $datetime1);
$minutes = round($interval / 60);
echo 'Diff. in minutes is: '.$minutes;
这是我的代码:
$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
您执行此操作的正确方法是:-
$log = '26/04/2015';
$end = '02/05/2015';
$date1 = \DateTime::createFromFormat('d/m/Y', $log);
$date2 = \DateTime::createFromFormat('d/m/Y', $end);
$diff = $date1->diff($date2, true);
echo $diff->days;
或尝试一下:
$datetime1 = strtotime("2011-10-10 10:00:00");
$datetime2 = strtotime("2011-10-10 10:45:00");
$interval = abs($datetime2 - $datetime1);
$minutes = round($interval / 60);
echo 'Diff. in minutes is: '.$minutes;