比较dateTime现在的日期格式(“ 2019-01-01 00:00:00.000”)

时间:2019-01-08 14:15:58

标签: php datetime

我有一个来自数据库的日期,格式为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”的帮助将不胜感激

4 个答案:

答案 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){...