当前位置: 首页 > 知识库问答 >
问题:

Yii2 Kartik DateRangePicker。

梅逸清
2023-03-14

我正在使用带有“预设下拉”选项的Kartiks DateRangePicker。这将提供一些默认值,以便搜索、今天、昨天、最后7天等。

产生选择器的代码:

echo DateRangePicker::widget([
    'model'=>$model,
    'attribute' => 'created_at',
    'useWithAddon'=>true,
    'convertFormat'=>true,
    'presetDropdown'=>true,
    'hideInput'=>true,
    'startAttribute' => 'start',
    'endAttribute' => 'end',
    'pluginOptions'=>[
        'locale'=>['format' => 'Y-m-d'],
    ]
]);

SearchItem类:

  $this->start = strtotime($this->start);
  $this->end = strtotime($this->end);

  $query->andFilterWhere(['>=', 'created_at', $this->start])
        ->andFilterWhere(['<', 'created_at', $this->end]);

我遇到的问题是,当使用今天昨天选项时,它会生成以下查询:

SELECT * FROM `item` WHERE (`created_at` >= 1534896000) AND (`created_at` < 1534896000)

所以它在查询凌晨12点突然创建的物品。有人知道这可能是什么吗,非常确定这不是默认行为,所以一定是我做错了什么。

共有2个答案

赵钊
2023-03-14

或者,您可以在第一个版本中使用类似的内容来获得正确的结束时间戳:

strtotime('+1 day', $this->end) - 1

使用上面的命令,您可以获得第二天开始的时间戳(例如14/11 00:00:00),然后从中减去1秒,以获得所需的时间戳(在同一示例13/11 23:59:59中)。

步骏
2023-03-14

我的坏...

通过将“格式”选项编辑为:

echo DateRangePicker::widget([
    'model'=>$model,
    'attribute' => 'created_at',
    'useWithAddon'=>true,
    'convertFormat'=>true,
    'presetDropdown'=>true,
    'hideInput'=>true,
    'startAttribute' => 'start',
    'endAttribute' => 'end',
    'pluginOptions'=>[
        'locale'=>['format' => 'Y-m-d H:i:s'],
    ]
]);

生成一个看起来更丑的输入字段,但有一种方法可以隐藏它:

 类似资料:

相关问答

相关文章

相关阅读