使用 YYYY-MM-DD 格式而不是 unix 时间戳比较日期是否安全


Is it safe to compare dates using YYYY-MM-DD format instead of unix timestamp?

我通常先使用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 时间戳是一个不错的选择,但今天对象方法是更好的选择。