php - 如何根据时间戳计算某天的小时数?
问题描述
我的数据库中有一个包含用户会话的表。有两列称为started_at
和ended_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');
}
这可行,但计算它需要相当多的时间。有没有更有效或更简单的方法来做到这一点?
解决方案
含碳:
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);
推荐阅读
- javascript - 从数组大小创建输入不适用于 Jquery
- hibernate - 即使标记为延迟加载,Hibernate 也会急切地加载
- android - Android 上的 Kivy:如何在应用更新后保留本地保存的文件?
- reactjs - 测试 Apollo Mutation graphql 错误
- scala - Scala - 用另一列填充“空”列
- google-chrome - Chrome 存储 API 密钥正在重置
- c++ - 使用异常的 C++ 程序是否需要在其主函数中包含 try/catch 块?
- vue.js - Vue JS 嵌套列表:将 props 传递给子级和子级的子级
- php - 从 PHP 电子表格导出 Excel 文件。当我添加一定数量的 "Echo" 时,会出现奇怪的字符串输出并且不会导出
- docker - 使用 docker-compose 挂载将跨主机更改的卷