You need to enable JavaScript to run this app. 如何在Yii平台上将日期格式从YYYY-MM-DD改为DD-MM-YYYY?
优惠活动
大模型
产品
解决方案
定价
更多

如何在Yii平台上将日期格式从YYYY-MM-DD改为DD-MM-YYYY?

Yii平台调整日期显示格式为DD-MM-YYYY的实现方案

所有方案均遵循「不修改框架核心文件」的原则,避免后续框架升级时配置丢失,分版本说明可落地方案:

主流Yii2版本的实现方式

  • 全局统一生效配置:找到对应应用的配置文件(基础模板是根目录config/web.php,高级模板是对应应用下的config/main.php),在配置数组中增加formatter组件的配置项:
    'formatter' => [
        // 指定日期展示格式为DD-MM-YYYY
        'dateFormat' => 'dd-MM-yyyy',
        // 如需同步调整带时间的日期格式,可补充配置
        'datetimeFormat' => 'dd-MM-yyyy HH:mm',
        // 同步配置时区,避免时间计算偏移
        'timeZone' => 'Asia/Shanghai',
    ],
    
    配置完成后,所有通过Yii::$app->formatter->asDate(原始时间值)输出的日期内容,都会自动按照DD-MM-YYYY格式展示,不需要逐处修改视图代码。
  • 局部字段单独设置格式:如果不需要全局调整,仅需对个别页面、个别字段换格式,无需改动全局配置,直接在视图层的控件配置里单独指定格式即可。比如GridView表格的日期列配置:
    [
        'attribute' => 'publish_time',
        // 单独指定该字段的输出格式为DD-MM-YYYY
        'format' => ['date', 'php:d-m-Y'],
    ],
    
  • 模型层封装复用:如果同一日期字段在多个页面需要统一格式化展示,可在对应ActiveRecord模型中新增展示方法,避免重复写格式化逻辑:
    // 模型内新增方法
    public function getDisplayTime()
    {
        return Yii::$app->formatter->asDate($this->publish_time, 'dd-MM-yyyy');
    }
    
    后续在视图中直接调用$model->displayTime即可拿到格式化完成的日期值。

老版本Yii1的实现方式

  • 全局配置调整:打开项目protected/config/main.php配置文件,在components配置块中增加格式化组件的规则:
    'components' => [
        'format' => [
            'dateFormat' => 'dd-MM-yyyy',
        ],
    ]
    
  • 表格类组件的单字段配置:如果是用CGridView展示日期列,可直接在列配置中通过值转换实现格式调整:
    array(
        'name' => 'publish_time',
        'value' => 'date("d-m-Y", strtotime($data->publish_time))',
    ),
    

注意事项

  • 格式符注意区分大小写:小写dd是两位数字的日期,大写DD是星期的完整名称;小写mm是两位数字的月份,大写MM是月份的完整英文名称,写错会导致展示结果不符合预期。
  • 不要直接修改框架核心目录下的格式化源码,这类改动会在框架版本升级时被完全覆盖,造成不必要的调试成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 23:24:04