如何在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
相关产品推荐
相关产品推荐

