修改DateType变量

时间:2018-07-31 10:15:19

标签: php symfony

我正在构建一个过滤器,以按最小日期和最大日期选择元素。 Formbuilder以YYYY-MM-DD HH-MM-SS格式返回日期,但HH-MM-SS始终等于00-00-00。

但是我希望我的日期上限为YYYY-MM-DD 23-59-59。无论如何,我可以修改我的日期上限吗?

谢谢!

编辑

这是formbuilder代码

->add(
                'date_max',
                DateType::class,
                [
                    'label'         => 'Date max',
                    'attr' => ['style' => 'width: 1000px'],
                    'required'      => false,
                    'empty_data'    => null
                ]
            );

这是querybuilder代码

    if ($datemax !== null) {
        $qb->andWhere('q.date_creation >= :date_max')
            ->setParameter('date_max', $datemax);

我的问题是,我的formbuilder给了我一个看起来像这样的日期类型:

object(DateTime)#43691 (3) {  ["date"]=>  string(26) "2018-07-25 00:00:00.000000"["timezone_type"]=>  int(3)  ["timezone"]=>  string(3) "UTC"}

我希望它像这样:

object(DateTime)#43691 (3) {  ["date"]=>  string(26) "2018-07-25 23:59:59.000000"["timezone_type"]=>  int(3)  ["timezone"]=>  string(3) "UTC"}

这样,当我的sql查询执行时,我可以访问date_max的创建内容。

对不起,我的帖子有点乱(我的英语不好)

2 个答案:

答案 0 :(得分:0)

您可以使用DateType对象-> format('Y-m-d')精确指定所需的格式,然后在随后的23:59:59进行串联。

这或多或少是您想要的?

此外,您可以在格式字符串中包含常量,如下所示:

$date = new DateTime('2018/01/01');

// Output year with constant time
echo $date->format('Y-m-d 23:59:59');

答案 1 :(得分:0)

因为谁有时间阅读manuals

$date_string = "2018-07-31 00:00:00";
$date = new DateTime($date_string);
echo $date->format('Y-m-d H:i:s') . "\n";
// set the time to 1 second before midnight
$date->setTime(23, 59, 59);
echo $date->format('Y-m-d H:i:s') . "\n";

输出:

2018-07-31 00:00:00
2018-07-31 23:59:59

修改

仅注意到您说的时间格式为HH-MM-SS。如果确实如此,那么您将需要以下代码:

$date_string = "2018-07-31 00-00-00";
$date = DateTime::createFromFormat('Y-m-d H-i-s', $date_string);
echo $date->format('Y-m-d H-i-s') . "\n";
$date->setTime(23, 59, 59);
echo $date->format('Y-m-d H-i-s') . "\n";

输出:

2018-07-31 00-00-00
2018-07-31 23-59-59

编辑2

鉴于您已经有一个DateTime对象,您要做的就是设置时间:

var_dump($date);
// set the time to 1 second before midnight
$date->setTime(23, 59, 59);
var_dump($date);

输出:

object(DateTime)#1 (3) {
  ["date"]=>
  string(26) "2018-07-31 00:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}
object(DateTime)#1 (3) {
  ["date"]=>
  string(26) "2018-07-31 23:59:59.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}