在我的php代码中,我用UTC存储日期和时间,但我也用mysql存储日期时间(也用UTC(。
使用大于和小于运算符进行日期比较会失败吗?
$curdate=date('Y-m-d H:i:s');
if($start_datetime>$curdate)
没有
他们不可能失败
Mysql日期格式是专门为此目的而制作的。
没有任何理由将其转换为任何其他格式进行比较。
PHP:使用strtotime()
将日期更改为UNIX时间戳,然后u可以进行比较。
MySQL:
将日期列的dataType更改为DateTime
,然后u可以通过以下方式进行比较:
$d1 = new DateTime('2008-08-03 14:52:10');
$d2 = new DateTime('2008-01-03 11:11:10');
var_dump($d1 == $d2);
var_dump($d1 > $d2);
var_dump($d1 < $d2);
直接日期时间比较不会失败。你可以做到。
时间戳比较会更快,但我不认为在php应用程序中会有这样的性能微小改进,而且你必须考虑2030错误。
我更喜欢比较"自Unix大纪元以来的秒数(1970年1月1日00:00:00 GMT("。当然,这只适用于1970年以后的日期。
假设$date1和$date2是要比较的两个日期变量:
if (date("U",$date1) > date("U",$date2)) {
// $date1 is more recent than $date2
} else {
// $date1 is older than (or equal to) $date2
}
strtotime($curdate) < strtotime($start_datetime)
strtotime((返回一个int值,表示自1970年1月1日以来经过的秒数这意味着,如果$curdate日期为"2011-01-01 12:00:00",$start-datetime为"2011-1-01 12:00:01",那么$start-datatime大于$curdate,因为strtotime为$start-ddatetime返回一个整数,该整数恰好比$curdate大一。