You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Blade中如何将整数分钟转为带小时分钟的格式化时长

Laravel Blade 分钟转「小时+分钟」格式化实现

核心逻辑非常简单:对总分钟数做除以60的整数除法得到小时值,对60取余得到剩余分钟值,按规则拼接字符串即可,无需依赖额外扩展包。

单处使用直接写计算逻辑

如果只需要在单个模板位置做格式化,直接在Blade里嵌入简单计算即可,示例:

{{-- 总分钟数存在$totalMinutes变量中 --}}
@php
    $hours = intdiv($totalMinutes, 60);
    $remainingMins = $totalMinutes % 60;
@endphp
{{ $hours }}h{{ $remainingMins }}min

如果需要适配边界场景(不足1小时只显示分钟、整小时不显示多余的0分钟),加简单判断就行:

@php
    $hours = intdiv($totalMinutes, 60);
    $remainingMins = $totalMinutes % 60;
    $output = '';
    if ($hours > 0) $output .= $hours . 'h';
    if ($remainingMins > 0 || $hours === 0) $output .= $remainingMins . 'min';
@endphp
{{ $output }}

对应输出效果:

  • 传入80 → 1h20min
  • 传入45 → 45min
  • 传入120 → 2h

提示:intdiv是PHP7+内置的整数除法函数,若使用PHP7以下版本,替换为(int)($totalMinutes / 60)即可实现相同效果。

多处复用注册Blade自定义指令

如果项目里很多位置需要做这个格式化,直接在AppServiceProvider的boot方法里注册自定义指令,一次定义全局可用:

  1. 编辑app/Providers/AppServiceProvider.php,添加指令注册代码:
use Illuminate\Support\Facades\Blade;

public function boot()
{
    Blade::directive('formatDuration', function ($totalMinutes) {
        return "<?php
            \$h = intdiv($totalMinutes, 60);
            \$m = $totalMinutes % 60;
            \$res = '';
            if (\$h > 0) \$res .= \$h.'h';
            if (\$m > 0 || \$h === 0) \$res .= \$m.'min';
            echo \$res;
        ?>";
    });
}
  1. 之后在任意Blade模板里直接调用即可:
@formatDuration(80) {{-- 输出1h20min --}}
@formatDuration(120) {{-- 输出2h --}}

模型固定字段用访问器

如果分钟数是Eloquent模型的固定字段(比如视频时长、课程时长),可以在模型里定义访问器,不管是模板渲染还是接口返回,都能直接拿到格式化后的内容:

// 在对应模型文件中添加
public function getFormattedDurationAttribute()
{
    $hours = intdiv($this->duration, 60);
    $mins = $this->duration % 60;
    $res = '';
    if ($hours > 0) $res .= $hours.'h';
    if ($mins > 0 || $hours === 0) $res .= $mins.'min';
    return $res;
}

模板中直接调用属性即可:

{{ $video->formatted_duration }}

内容的提问来源于stack exchange,提问作者iliyass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 04:51:31