13 public $dateOutcomeFormat =
'Y-m-d';
14 public $dateTimeOutcomeFormat =
'Y-m-d H:i:s';
16 public $dateIncomeFormat =
'yyyy-MM-dd';
17 public $dateTimeIncomeFormat =
'yyyy-MM-dd hh:mm:ss';
19 public $timeFields = array(
'date',
'datetime',
'timestamp');
21 public function beforeSave($event){
24 foreach($event->sender->tableSchema->columns as $columnName => $column){
25 if (!in_array($column->dbType, $this->timeFields))
continue;
26 if (!strlen($event->sender->$columnName)){
27 $event->sender->$columnName = null;
30 if (($column->dbType ==
'date')) {
31 $timestamp = CDateTimeParser::parse($event->sender->$columnName, Yii::app()->locale->dateFormat);
32 if($timestamp ===
false) {
33 $timestamp = strtotime($event->sender->$columnName);
35 $event->sender->$columnName = date($this->dateOutcomeFormat, $timestamp);
37 $pattern = strtr(Yii::app()->locale->dateTimeFormat, array(
38 '{0}' => Yii::app()->locale->timeFormat,
39 '{1}' => Yii::app()->locale->dateFormat
41 $timestamp = CDateTimeParser::parse($event->sender->$columnName, $pattern);
42 if($timestamp ===
false) {
43 $timestamp = strtotime($event->sender->$columnName);
45 if($timestamp ===
false) {
46 $timestamp = $event->sender->$columnName;
48 if(!$timestamp)
return false;
49 $event->sender->$columnName = date($this->dateTimeOutcomeFormat, $timestamp);
55 public function afterFind($event){
57 foreach($event->sender->tableSchema->columns as $columnName => $column){
58 if (!in_array($column->dbType, $this->timeFields))
continue;
60 if (!strlen($event->sender->$columnName)) {
61 $event->sender->$columnName = null;
64 if ($column->dbType ==
'date') {
65 $timestamp = CDateTimeParser::parse($event->sender->$columnName, $this->dateIncomeFormat);
66 if(!$timestamp)
return false;
67 $event->sender->$columnName = Yii::app()->dateFormatter->formatDateTime($timestamp,
'medium', null);
69 $timestamp = CDateTimeParser::parse($event->sender->$columnName, $this->dateTimeIncomeFormat);
70 if(!$timestamp)
return false;
71 $event->sender->$columnName = Yii::app()->dateFormatter->formatDateTime($timestamp,
'medium',
'medium');