我正在以一种形式使用日期选择器,但是提交后,该值在数据库中存储为 000-00-00-00 提交表单 Mindate 显示值。
同一日期选择器以其他形式正常工作,我正在尝试重复使用日期选择器
file.js
function userDetailsEventHandlers() {
$('.date-picker').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-MM-yy',
yearRange: '1900:1998',
minDate: '01-January-1900',
maxDate: '31-December-1998',
});
}
form.php
<div class="form-group">
<?php echo $form->labelEx($model,'DOB'); ?>
<?php echo $form->textField($model,'DOB', array('class' => 'form-control date-picker')); ?>
<?php echo $form->error($model,'DOB'); ?>
</div>
模型类:
protected function afterFind() {
if (!empty($this->DOB)) {
$this->DOB = date('d-F-Y', strtotime($this->DOB));
}
return parent::afterFind();
}
数据库中的数据类型:DateTime(我也尝试使用日期(。使用DatePicker的其他形式的数据类型是DateTime。
$('.date-picker').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-MM-yyyy', <------------ Make this changes
yearRange: '1900:1998',
minDate: '01-01-1900', <------------ Make this changes
maxDate: '31-12-1998',
});
}
您指定的dateformat是" dd-mm-yy",需要以相同格式传输思维和最大。另外,请确保在服务器端通过哪种格式。如果是yyyy-MM-dd
,则需要使用STR_TO_DATE()
手动将其转换为日期。只需尝试以上代码即可。希望这会有所帮助。
我认为问题是日期格式,因为您的日期选择器使用日期格式:
'01-January-1900'
// which is different then 'Y-m-d'
但是日期列的默认格式为 'Y-m-d'
,如果您的数据不正确,则将插入000-00-00
。因此,将您的日期更改为'Y-m-d'
,然后重试。
最终使用了cjuidatePicker,:p
<div class="form-group">
<?php echo $form->labelEx($model,'DOB'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker',array(
'model' => $model,
'attribute' => 'DOB',
'language'=> 'en',
'name'=>'datepicker-month-year-menu',
//'flat'=>true,//remove to hide
'options'=>array(
'dateFormat' => 'yy-mm-dd',
'showAnim'=>'slide',//'slide','fold','slideDown','fadeIn','blind','bounce','clip','drop'
'changeMonth'=>true,
'changeYear'=>true,
'yearRange'=>'1900:1998',
// 'minDate' => '2000-01-01', // minimum date
// 'maxDate' => '2099-12-31', // maximum date
),
'htmlOptions'=>array(
'class' => 'form-control',
'style'=>''
),
));
?>
</div>