Yii jui日期选择器格式

时间:2014-11-12 19:04:32

标签: yii2

我在yform \ jui \ DatePicker的_form文件中使用以下代码,在日期选择中它正确显示日期格式。在gridview中,渲染的数据没问题。

但是当我打开更新记录时,显示的格式为yyyy-mm-dd,我想显示与dd-mm-yyyy相同

<?= $form->field($model, 'birth_date')->widget(DatePicker::className(),


                    [
                        'language' => 'en',
                        'clientOptions' =>[
                        'dateFormat' => 'd-m-yy',
                        'language' => 'US',
                        'country' => 'IN',
                        'showAnim'=>'fold',
                        'yearRange' => 'c-25:c+0',
                        'changeMonth'=> true,
                        'changeYear'=> true,
                        'autoSize'=>true,
                        'showOn'=> "button",
                         //'buttonImage'=> "images/calendar.gif",
                        'htmlOptions'=>[
                        'style'=>'width:80px;',
                        'font-weight'=>'x-small',
                        ],]]) ?> 

感谢。

2 个答案:

答案 0 :(得分:1)

您可以在控制器中设置日期格式,然后渲染视图。在控制器中:

$model->birth_date=Yii::$app->formatter->asDate($model->birth_date, "dd-mm-yyyy");

查看Yii2的官方formatter指南here

答案 1 :(得分:1)

您可以推广日期格式

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->birth_date = Setup::convert($model->dateAttr);
$model->birth_date = Setup::convert($model->datetimeAttr, 'datetime');
相关问题