2016-08-02 70 views
0

在我的數據庫中,出生日期以Y-m-d格式存儲,例如。 1965年9月4日。當CakePHP取數據庫時,其內部將這些日期轉換爲d/m/y格式,因此1965-09-04變爲4/9/65。CakePHP日期格式從數據庫中提取

現在,當我嘗試將此日期轉換爲dd/mm/YY格式(04/09/1965)時,它會給出(04/09/2065)。

小故事,我不希望cakephp在從數據庫中提取時轉換日期格式。

+0

其中CakePHP中,2個或3?據我所知,CakePHP的不轉換日期。你的模型中有beforeSave嗎? – giuseppe

+0

其cakePHP 3.不,日期正確保存在數據庫中,因此它不能在保存之前。它以錯誤的格式出現在視圖中。 – Sourabh

回答

1

找到了答案。它實際上是格式化日期,而數據是從控制器到視圖。使用引導文件更改cakephp的默認日期格式。該文件中添加此:

Cake\I18n\Date::setToStringFormat('YYYY-MM-dd'); 
Cake\I18n\FrozenDate::setToStringFormat('YYYY-MM-dd'); 

\Cake\Database\Type::build('date') 
    ->useImmutable() 
    ->useLocaleParser() 
    ->setLocaleFormat('YYYY-MM-dd'); 

參考: Cakephp 3.2 change default date format

0

簡單,如果你想根據CakePHP的更改日期格式再治你可以使用這個樣子。 首先在數據庫中更改字段數據類型int。 中給定的模態使用這些函數。

public function beforeSave(){ 

$this->data['TableName']['FieldName'] = time(); 
} 

public function afterFind($results, $primary = false) { 
foreach ($results as $key => $val) { 
     if (isset($val['TableName']['FieldName'])) { 
      $results[$key]['TableName']['FieldName'] = $this->dateFormatAfterFind(
       $val['TableName']['FieldName'] 
      ); 
     } 


    } 
    return $results; 
} 

public function dateFormatAfterFind($dateString) { 

    return date("Y-m-d H:m",$dateString); 
} 

我希望這會爲你