作者:白狼 出處:http://www.manks.top/article/yii2_gridview_dateformat_search
本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
日期格式化,我們先來看看效果圖

這個我們分情況討論
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類型,個人覺得存時間戳甚是麻煩,如果你有好的建議,下方留言我們共同交流。
