使用格式函数,日期时间未给出正确的值

Ale*_*shy 1 php

我试图通过PHP的文档来比较2个日期:

$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");
var_dump($date1 > $date2); //false
Run Code Online (Sandbox Code Playgroud)

所以现在不比明天大,所以这是假的.现在我有这个:

$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
Run Code Online (Sandbox Code Playgroud)

现在,当我试着比较一个古老的约会,明天,就像在例子中,我得到了真实.哪个应该返回false,有人可以解释一下原因吗?

Aym*_*Dev 7

你应该比较DateTime对象:

var_dump($date_start > $date_end);
# bool(false)
Run Code Online (Sandbox Code Playgroud)

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

18/07/2018 16:20
01/08/2018 21:45
^-- 1 > 0
Run Code Online (Sandbox Code Playgroud)