是否有一种简单的方法来格式化Yii2 REST API返回的日期?
例如 - 我在数据库中有UTC日期,我想格式化它并在日期末添加Z
:2015-04-25 16:01:59Z
答案 0 :(得分:1)
您可以配置yii \ i18n \ formatter来控制您的语言环境显示的全局日期格式。您可以在配置文件中设置可以通过
访问的类似内容'formatter' => [
'class' => 'yii\i18n\Formatter',
'dateFormat' => 'php:d-M-Y',
'datetimeFormat' => 'php:d-M-Y H:i:s',
'timeFormat' => 'php:H:i:s',
]
然后,您可以使用格式化程序指定的格式在任何地方显示日期时间:
echo \Yii::t('app', 'Today is {0, date}', $yourTimeStampAttr);
OR
在保存到db之前,您可以轻松地全局转换任何属性格式。只需创建一个这样的辅助类:
class Setup {
const DATE_FORMAT = 'php:Y-m-d';
const DATETIME_FORMAT = 'php:Y-m-d H:i:s';
const TIME_FORMAT = 'php:H:i:s';
public static function convert($dateStr, $type='date', $format = null) {
if ($type === 'datetime') {
$fmt = ($format == null) ? self::DATETIME_FORMAT : $format;
}
elseif ($type === 'time') {
$fmt = ($format == null) ? self::TIME_FORMAT : $format;
}
else {
$fmt = ($format == null) ? self::DATE_FORMAT : $format;
}
return \Yii::$app->formatter->asDate($dateStr, $fmt);
}
}
然后在其他任何地方(如控制器/模型),您可以访问此函数以转换任何输入日期/时间字符串以保存到数据库。
$model->dateAttr = Setup::convert($model->dateAttr);
$model->datetimeAttr = Setup::convert($model->datetimeAttr, 'datetime');