Laravel中如何将从数据表获取的时间转换为印度AM/PM格式
Laravel 实现印度制式时间格式转换
Laravel 模型默认将updated_at、created_at这类时间字段自动解析为内置Carbon时间实例,可直接通过格式化方法输出目标格式,无需手动做类型转换。当前场景下可通过以下两种方式实现需求:
模板内直接格式化
直接修改现有Blade输出代码,通过Carbon格式符匹配目标输出规则:
{{ $ad->updated_at->format('Y-m-d h:i a') }}
格式匹配说明:
- 日期段使用
Y-m-d,输出四位年、带前导零的两位月、两位日- 时间段使用
h(12小时制带前导零的两位小时)、i(带前导零的两位分钟)- 后缀标识使用
a,输出小写的am/pm
对示例时间2021-04-22 16:09:24执行格式化,输出结果为2021-04-22 04:09 pm,完全符合需求。
模型层封装可复用逻辑
如果项目内多处需要使用该时间格式,可在Ad模型中定义访问器,避免重复编写格式化代码:
// Ad模型内添加以下方法 public function getIndianUpdatedAtAttribute() { return $this->updated_at->format('Y-m-d h:i a'); }
模板中可直接调用封装好的属性输出:
{{ $ad->indian_updated_at }}
常见调整说明
- 若需要输出大写的AM/PM标识,将格式串中的
a替换为A即可 - 如果遇到字段未被自动解析为Carbon的特殊场景,可手动通过
Carbon\Carbon::parse($ad->updated_at)转换为时间实例后再执行格式化操作
内容的提问来源于stack exchange,提问作者nwgroupchat h
相关产品推荐
相关产品推荐

