mtp*_*ltz 34 date laravel php-carbon laravel-5.1
我试图找出如何获取存储在我们数据库中的两个日期时间字符串,并将其转换为时间格式hh:mm:ss的差异.
我看了看diffForHumans,但是这确实给我想要的格式,并返回之类的东西after,ago等; 这很有用,但不适合我想要做的事情.
持续时间永远不会超过几天,最多只有几个小时.
$startTime = Carbon::parse($this->start_time);
$finishTime = Carbon::parse($this->finish_time);
$totalDuration = $finishTime->diffForHumans($startTime);
dd($totalDuration);
// Have: "21 seconds after"
// Want: 00:00:21
Run Code Online (Sandbox Code Playgroud)
mtp*_*ltz 44
我最终使用Carbon获取总秒数差异:
$totalDuration = $finishTime->diffInSeconds($startTime);
// 21
Run Code Online (Sandbox Code Playgroud)
然后使用gmdate:
gmdate('H:i:s', $totalDuration);
// 00:00:21
Run Code Online (Sandbox Code Playgroud)
如果有人有更好的方式我会感兴趣.否则这是有效的.
STW*_*son 31
$finishTime->diff($startTime)->format('%H:%I:%S');
// 00:00:21
Run Code Online (Sandbox Code Playgroud)
Ada*_*dam 17
$start = new Carbon('2018-10-04 15:00:03');
$end = new Carbon('2018-10-05 17:00:09');
Run Code Online (Sandbox Code Playgroud)
您可以使用
$start->diff($end)->format('%H:%I:%S');
Run Code Online (Sandbox Code Playgroud)
这给出了24h模的差
02:00:06
如果您希望在24小时以上获得差异,可以使用:
$start->diffInHours($end) . ':' . $start->diff($end)->format('%I:%S');
Run Code Online (Sandbox Code Playgroud)
这使 :
26:00:06
我知道这是一个老问题,但在搜索此类内容时,它仍然位于 Google 结果的顶部,并且 Carbon 在此方面增加了很多灵活性,因此也想在这里放弃 2022 年的解决方案。
\nTL;DR - 查看该方法的不同/更详细版本的文档diffForHumans,以及对options.
例如,我们需要以小时和分钟显示两个 Carbon 实例 (start和end) 之间的差异,但它们可能相隔超过 24 小时\xe2\x80\x94,在这种情况下,分钟变得不那么有价值/重要的。我们想要排除“ago”或还想用逗号连接字符串。
$options我们可以通过传入 来完成所有这些,diffForHumans如下所示:
use Carbon\\CarbonInterface;\n\n$options = [\n \'join\' => \', \',\n \'parts\' => 2,\n \'syntax\' => CarbonInterface::DIFF_ABSOLUTE,\n];\n\nreturn $end->diffForHumans($start, $options);\nRun Code Online (Sandbox Code Playgroud)\n这将产生类似于持续时间中看到的值”列中看到的值:
\n\n希望这对某人有帮助!
\n| 归档时间: |
|
| 查看次数: |
57904 次 |
| 最近记录: |