首页 文章

Yii2 Kartik DateRangePicker .

提问于
浏览
0

我正在使用带有'presetDropdown'选项的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]);

我遇到的问题是当使用 todayyesterday 选项时,它会产生以下查询:

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

所以它正在查询上午12点创建的项目 . 有没有人有任何想法可能是什么,非常确定它不是默认行为所以必须是我做错了 .

2 回答

  • 0

    我的错...

    通过编辑格式选项解决:

    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'],
        ]
    ]);
    

    产生一个更丑陋的输入字段,但有一种方法可以隐藏:

    enter image description here

  • 0

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

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

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

相关问题