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

Yii2 GridView中如何将yyyy-mm-dd日期转换为mm-dd-yyyy格式

Yii2 GridView 中yyyy-mm-dd格式日期转mm-dd-yyyy展示实现方案

你不需要手动做复杂的时间戳解析,以下是可直接复用的实现方式,优先推荐第一种Yii2原生方案:

方案1:使用Yii2内置格式化组件(最简便,无需手动处理时间戳)

Yii2自带的Formatter类会自动解析常见日期字符串(包括你用的yyyy-mm-dd格式)为时间戳,不需要手动调用strtotime或者做字符串拆分,直接在GridView的列配置中设置即可:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        // 其他列配置...
        [
            'attribute' => 'create_time', // 替换为你实际的日期字段名
            'format' => ['date', 'php:m-d-Y'], // m-d-Y即对应mm-dd-yyyy输出格式
        ],
        // 其他列配置...
    ],
]) ?>

注意:如果你的项目配置了全局formatter默认日期格式,这个配置会优先使用当前列指定的格式,不会影响全局逻辑。

方案2:闭包手动处理(兼容特殊日期格式场景)

如果碰到内置组件无法自动解析的特殊日期格式,可以用PHP原生strtotime()函数把yyyy-mm-dd字符串转为时间戳,再调用date()格式化输出,记得加空值判断避免空值时错误输出当前日期:

[
    'attribute' => 'create_time',
    'value' => function ($model) {
        // 空值直接返回空字符串,避免strtotime解析空值返回当前时间戳
        if (empty($model->create_time)) {
            return '';
        }
        return date('m-d-Y', strtotime($model->create_time));
    },
]

避坑提示

  • 不要手动拆分yyyy-mm-dd的字符串做拼接,很容易出现月份、日期补零错误,或者跨时区计算偏差
  • 如果你的日期字段存储的是带时分秒的yyyy-mm-dd H:i:s格式,上面两种方案都可以正常兼容,不需要额外调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 21:21:36