====== Trabajar con fechas ====== El formato de fecha en las bases de datos tiene la estructura inglesa: año-mes-dia para fechas(tipo date) y año-mes-dia hora:minutos:segundos para datetime. Cuando insertamos registros en la base de datos o recuperamos información debemos hacerlo con este formato, que no coincide con el que utilizamos a la hora de presentarlas en español: dia/mes/año. Existen varias formas de solucionar el problema. La forma más sencilla es utilizar la extensión [[http://demos.krajee.com/datecontrol|Datecontrol de kartik]], que se configura como un módulo que se encarga de mostrar las fechas en formato d/m/Y en los formularios, y antes de enviarse al servidor se transforman en Y-m-d. Por tanto, en el código PHP las fechas siempre estarán en formato Y-m-d. Instalación: composer require kartik-v/yii2-datecontrol "dev-master" composer require kartik-v/yii2-widget-datepicker "dev-master" En config/web.php: use kartik\datecontrol\Module; ... $config= [ ... 'modules' => [ 'datecontrol' => [ 'class' => '\kartik\datecontrol\Module', 'autoWidget' => true, 'autoWidgetSettings' => [ Module::FORMAT_DATE => ['type' => 2, 'pluginOptions' => ['autoclose' => true]] ], ] ], Y para convertir una fecha de Y-m-d a d/m/Y: echo \Yii::$app->formatter->asDate($model->fecha); Para no tener que hacer esto cada vez que necesitemos convertir una fecha en una vista, podemos crear una "propiedad" en el modelo: public function getfechaText(){ return \Yii::$app->formatter->asDate($this->fecha); } Y en cualquier vista utilizaremos $model->fechaText para mostrar la fecha con el formato correcto En los formularios, los campos fecha se crearán de la forma siguiente: field($model, 'fecha')->widget(DateControl::classname(),['pluginOptions' => ['autoclose'=>true]); ?> Para ver más opciones, (Fecha-hora, Hora, limitar fechas, etc...), consulta [[http://demos.krajee.com/datecontrol|Datecontrol de kartik]]