php date->diff() 返回无意义的金额

标签 php datetime laravel datediff

这是我的代码:

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

相关文章:

php - Android 应用程序的身份验证模型

从电影创建屏幕截图的 PHP 函数/库

c# - C#中小时和分钟的时间跨度计算

c# - ID 不同的 Linq 计数

php - 循环 DATETIME 并在 DATETIME 内保留 DATES

mysql - 在 MySql 中查找所选项目数量的最快方法?

php - Laravel 安装 Algolia 包

php - 使用php删除mysql中id最高的行

php - 使用 updateOrCreate 方法更新一对多关系

php - 回显完整的 joomla 查询(有限制等)?