首页 > 解决方案 > 如何根据时间戳计算某天的小时数?

问题描述

我的数据库中有一个包含用户会话的表。有两列称为started_atended_at。它们都包含时间戳。现在,我需要做的是计算一周中某一天的小时数。所以最终,我需要返回所有的课程,周一进行了 350 小时,周二进行了 250 小时,依此类推。

我尝试使用下面的代码来做到这一点。

$day = 0;
$dayTofetch = "mon";
$sessions = Session::whereRaw('WEEKDAY(sessions.started_at) = '.$dayTofetch)->get();

foreach($sessions as $session) {
    $started_at_date = new DateTime($session->started_at);
    $ended_at_date = new DateTime($session->ended_at);

    $diff = $date2->diff($date1);
    $day = $day + $diff->format('%h');
}

这可行,但计算它需要相当多的时间。有没有更有效或更简单的方法来做到这一点?

标签: phpmysqllaravel

解决方案


含碳:

use Carbon\Carbon;

$started_at_date = new Carbon($session->started_at);
$ended_at_date = new Carbon($session->ended_at);

$diff = $started_at_date->diffInHours($ended_at_date);

推荐阅读