我通常先使用strtotime
将 YYYY-MM-DD 转换为 unix 时间戳,然后比较它们,但这似乎工作得很好:
echo ('2015-01-01' < '2015-01-02')? 1 : 0;
// returns 1
我想知道,这种"更简单"的方法对于基本的比较运算符(例如<
、>
、<=
、=>
)是否可靠?
使用 <
和 >
比较 PHP 中的字符串不是一个好主意,因为涉及对整数和其他类型的隐式类型转换。
使用 strcmp 更好并且实际上会起作用,YYYY-mm-dd 中的日期按时间和字母顺序具有相同的顺序。它通常用于在日期时间列上创建索引,然后使用 WHERE 通过比较字符串筛选列的数据库中。
我强烈建议创建DateTime
或DateTimeImmutable
对象并使用这些对象(您可以在它们上使用比较运算符)。在 PHP 5.2 之前,UNIX 时间戳是一个不错的选择,但今天对象方法是更好的选择。