У меня была похожая проблема с европейскими датами, отформатированными как «дд / мм / гггг», и вот что я использую:
В правилах модели:
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('date','date','format'=>Yii::app()->locale->getDateFormat('medium')),
потому что «средний» формат локали соответствует моим требованиям к валидации.
В форме, которую я использую:
<?php echo $form->labelEx($model,'date'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
//'name'=>'date',
'model'=>$model,
'attribute'=>'date',
'language'=>Yii::app()->language=='es' ? 'es' : null,
'options'=>array(
'changeMonth'=>'true',
'changeYear'=>'true',
'yearRange' => '-99:+2',
'showAnim'=>'fold', // 'show' (the default), 'slideDown', 'fadeIn', 'fold'
'showOn'=>'button', // 'focus', 'button', 'both'
'dateFormat'=>'dd/mm/yy',
'value'=>date('dd/mm/yy'),
'theme'=>'redmond',
'buttonText'=>Yii::t('ui','Select form calendar'),
'buttonImage'=>Yii::app()->request->baseUrl.'/images/calendar.gif',
'buttonImageOnly'=>true,
),
'htmlOptions'=>array(
'style'=>'vertical-align:top',
'class'=>'span2',
),
));?>
<?php echo $form->error($model,'date'); ?>
И преобразование обратно в формат MySQL, для сохранения, сравнения дат ...:
$date=strftime('%Y-%m-%d', strtotime(str_replace("/", "-", $this->date)));
Надеюсь, это поможет.