程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 淺析Yii2 GridView 日期格式化並實現日期可搜索教程

淺析Yii2 GridView 日期格式化並實現日期可搜索教程

編輯:PHP綜合

先給大家展示下日期格式化效果圖,如果大家滿意請繼續往下閱讀:

這個我們分情況討論

1、如果你的數據庫字段created_at存的時間格式是date或者datetime,那很簡單,gridview中直接輸出該字段created_at即可,如上圖中右側所示

2、如果數據庫存入的時間戳類型,如上圖中左側所示,則需要像下面這樣進行輸出

[
'attribute' => 'created_at',
'value' => function ($model) {
return date('Y-m-d H:i:s', $model->created_at);
},
],
[
'attribute' => 'created_at',
'format' => ['date', 'Y-m-d H:i:s'],
],

以上展示了兩種方式進行格式輸出,都可以。但是,如果想要實現搜索的機制,如果你的數據庫存入的是datetime型,很方便,dataProvider不用做修改,

代碼如下

$query->andFilterWhere([
// ......
'created_at' => $this->created_at,
// ......
]);

如果你的數據庫存入的是時間戳。

第一步,修改對應規則如下圖所示

第二步,修改dataProvider可參考如下代碼

//我們搜索輸入框中輸入的格式一般是 2016-01-01 而非時間戳
//輸出2016-01-01無非是想搜索這一天的數據,因此代碼如下
if ($this->created_at) {
$createdAt = strtotime($this->created_at);
$createdAtEnd = $createdAt + 24*3600;
$query->andWhere("created_at >= {$createdAt} AND created_at <= {$createdAtEnd}");
}

這裡做個小總結,建議使用datetime類型,個人覺得存時間戳甚是麻煩,如果你有好的建議,歡迎給我留言,共同學習進步。在此也非常感謝大家對網站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved