我有一个来自数据库的日期,格式为2019-06-20 00:00:00.000 我需要与现在的时间进行比较。(+ 7天重置为午夜) 具体如下:
if ($databasedatetime > $now){
}
else {}
到目前为止,我已经做到了:
$now = new DateTime();
$now->format('Y-m-d H:i:s');
$now->getTimestamp();
$now->modify('midnight');
$now->modify('+7 day');
但是当它试图进行比较时,无论它是否为真,我总是会出错。因此他们无法正确比较。
我现在的功能显然需要修改以将其设置为"2019-01-01 00:00:00.000"
格式。
因为目前它像2019-01-15 00:00:00.000000","timezone_type":3,"timezone":"Europe\/London
一样打印出来
任何将我的$ now变量转换为“ 2019-01-01 00:00:00.000”的帮助将不胜感激
答案 0 :(得分:0)
if (new DateTime($databasedatetime) > $now){
}
else {}
将$databasedatetime
转换为DateTime实例以进行比较。$now
转换为“ 2019-01-01 00:00:00.000”这样的格式,可以尝试$now->format('Y-m-d H:i:s.v')
答案 1 :(得分:0)
尝试从比较之前来自数据库的字符串创建DateTime
对象。
$time = strtotime($databasedatetime);
$databasetimeFormatted = date('Y-m-d H:i:s', $time);
if ($databasetimeFormatted > $now) {
...
}
答案 2 :(得分:0)
对于\ DateTime:http://php.net/manual/en/datetime.createfromformat.php
有一个createFromFormat方法<?php
$date = \DateTime::createFromFormat("Y-m-d H:i:s.u", "2019-06-20 00:00:00.000");
$now = new \DateTime();
var_dump($date,$now);
var_dump($date > $now);
答案 3 :(得分:0)
使用var_dump($databasedatetime);
证明$now
在DateTime中正确,但是
$databasedatetime
只是一个字符串。因此无法比较。
因此将$ databasedatetime转换为字符串。
我用过
$Ddate=date_create($databasetimedate);
date_format($Ddate,"Y/m/d H:i:s.v");
现在我可以像
一样进行比较if ($Ddate > $now){...