【发布时间】:2018-07-31 10:15:18
【问题描述】:
我正在构建一个过滤器来按日期最小值和日期最大值选择元素。 表单生成器以 YYYY-MM-DD HH-MM-SS 格式向我返回日期,但 HH-MM-SS 始终等于 00-00-00。
但我希望我的最大日期为 YYYY-MM-DD 23-59-59。无论如何我可以修改我的最大日期?
提前致谢!
编辑
这是表单生成器代码
->add(
'date_max',
DateType::class,
[
'label' => 'Date max',
'attr' => ['style' => 'width: 1000px'],
'required' => false,
'empty_data' => null
]
);
这是查询构建器代码
if ($datemax !== null) {
$qb->andWhere('q.date_creation >= :date_max')
->setParameter('date_max', $datemax);
我的问题是,我的表单生成器给了我一个日期类型,看起来像:
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 的创建。
对不起,我的帖子有点乱(我的英语不太好)
【问题讨论】:
-
您应该发布相关代码。没有这个,我唯一能建议的就是加一天减一秒。
-
如果您对时间不感兴趣,为什么不直接使用日期?
-
您的问题不清楚,因为您没有发布相关代码,但我假设您问的是如何创建和操作 DateTime 对象,对吧?如果是这种情况,您应该查看php.net/manual/en/class.datetime.php 并尝试应用 jeroen 的解决方案。
-
改用
\DateTimeImmutable。如果你真的不知道对象和引用是如何工作的,你最终会得到奇怪和意想不到的结果。 -
请查看我的问题的编辑(编辑 2)。我认为这回答了您编辑的问题。如果没有,请提供更多信息以帮助回答问题。