我在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',
],]]) ?>
感谢。
答案 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');