日期时间未使用格式功能提供正确的值

时间:2018-07-31 08:59:02

标签: php

根据PHP的文档,我正在尝试比较2个日期:

$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");
var_dump($date1 > $date2); //false

所以现在不比明天大,所以它是错误的。现在我有了这个:

$date_start = \DateTime::createFromFormat('d/m/Y H:i', '18/07/2018 16:20');
$date_start_format = $date_start->format('d/m/Y H:i');

$date_end = \DateTime::createFromFormat('d/m/Y H:i', '01/08/2018 21:45');
date_end_format = $date_end->format('d/m/Y H:i');

var_dump($date_start_format > $date_end_format); //True

现在,当我尝试将一个古老的日期与明天进行比较时,就像在示例中一样,我做到了。哪个应返回假,有人可以解释原因吗?

3 个答案:

答案 0 :(得分:7)

您应该比较DateTime个对象:

var_dump($date_start > $date_end);
# bool(false)

通过比较format()方法的结果,您正在比较字符串,这不是您期望的。
要理解,请逐个字符比较格式化的日期:

18/07/2018 16:20
01/08/2018 21:45
^-- 1 > 0

答案 1 :(得分:0)

尝试计算每个日期的时间戳,然后进行比较

var_dump($ date1-> getTimestamp()> $ date2-> getTimestamp())

答案 2 :(得分:-2)

尝试使用PHP strtotime()函数。

//Example

$date_start = strtotime(date('d/m/Y H:i', '18/07/2018 16:20')); $date_end = strtotime(date('d/m/Y H:i', '01/08/2018 21:45')); var_dump($date_start > $date_end); //false

使用Date库是否有任何特定原因?