
在 Laravel Blade 模板中,可直接使用 PHP 原生函数(如 intdiv() 或 floor())将整型分钟数转换为“NhMmin”格式(如 1510 分钟 → “25h10min”),注意需确保变量为整数类型,避免类型错误。
在 laravel blade 模板中,可直接使用 php 原生函数(如 `intdiv()` 或 `floor()`)将整型分钟数转换为“nhmmin”格式(如 1510 分钟 → “25h10min”),注意需确保变量为整数类型,避免类型错误。
在 Laravel 开发中,常需将数据库或业务逻辑返回的分钟总数(如视频时长、任务耗时等)以更易读的方式展示给用户。例如,80 分钟应显示为 1h20min,而非 80min。这一转换无需额外依赖包,可在 Blade 模板中直接完成。
✅ 推荐写法(PHP ≥ 7.3)
@php
$totalMinutes = (int) $duration; // 强制转为整数,防止字符串导致运算异常
$hours = intdiv($totalMinutes, 60);
$mins = $totalMinutes % 60;
@endphp
{{ $hours }}h{{ $mins }}minintdiv() 是 PHP 7.3+ 引入的安全整除函数,比 / + floor() 更语义清晰,且避免浮点误差。
⚠️ 兼容写法(支持旧版 PHP)
若项目运行在 PHP < 7.3 环境下,可用 floor() 替代:
@php
$totalMinutes = (int) $duration;
$hours = floor($totalMinutes / 60);
$mins = $totalMinutes % 60;
@endphp
{{ $hours }}h{{ $mins }}min? 关键注意事项
- 务必类型转换:若 $duration 来自表单输入或 JSON 数据,可能为字符串(如 "1510"),必须显式转为整数:(int) $duration 或 intval($duration),否则 % 运算可能出错或返回意外结果;
-
零值处理(可选增强):如需更友好的显示(如 0h5min → 5min),可添加逻辑:
@if ($hours > 0) {{ $hours }}h @endif {{ $mins }}min - 避免在 Blade 中过度逻辑:复杂格式化建议封装为 Accessor(Eloquent 模型中)或前端过滤器,保持模板简洁。
通过以上方式,你能在 Blade 中轻量、可靠地实现分钟到「小时+分钟」的格式化输出,兼顾可读性与兼容性。


















