首页 > 解决方案 > Cakephp:时间,差异没有按预期工作

问题描述

我正在构建一个任务管理器应用程序,用户可以在其中启动/停止任务。而且我想知道用户何时启动它,何时停止它以及任务运行了多长时间。

appcontroller.php我设置了这个时区:

date_default_timezone_set("Europe/Athens");

但是在taskscontroller.php我保存任务开始的时间时:

$now = FrozenTime::now();
$task->date_start = $now;

它提前 2 小时保存在数据库中(数据库中的字段是时间戳类型)。所以当我点击 9:00:00 开始时,我看到在数据库中保存为 11:00:00。当我单击停止时相同:

    $now = FrozenTime::now(); 
    $task->date_end = $now;

再次提前 2 小时保存。但是在我的应用程序中,当用户单击停止时,我想计算任务运行的时间。所以我是这样计算的:

$task->total_minutes = ($now->diff($task->date_start))->format('%i'); //minutes

但是即使 date_start 是 : 2019-03-18 11:43:47 并且 date_end 是 : 2019-03-18 11:45:33

我得到了 total_minutes: 58 这显然是错误的......为什么我会得到所有这些错误的行为?

标签: phpcakephptimetimestamp

解决方案


推荐阅读