在Yii2 REST中设置日期格式

时间:2015-05-07 21:25:38

标签: php rest date yii2

是否有一种简单的方法来格式化Yii2 REST API返回的日期? 例如 - 我在数据库中有UTC日期,我想格式化它并在日期末添加Z2015-04-25 16:01:59Z

1 个答案:

答案 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');