在我的PHP代码中,我以UTC格式存储日期和时间,但我也使用mysql存储日期时间(也在utc中)。
有没有什么方法可以使用大于和小于运算符来进行日期比较失败?
$curdate=date('Y-m-d H:i:s');
if($start_datetime>$curdate)
答案 0 :(得分:7)
不。
他们没有办法失败
为此目的,故意制作Mysql日期格式。
没有任何理由可以将其转换为其他任何要比较的格式。
答案 1 :(得分:3)
<强> PHP:强>
使用strtotime()
将日期更改为 UNIX 时间戳,然后您可以进行比较。
<强> MySQL的:强>
将日期列的 dataType 更改为DateTime
,然后您可以按以下方式进行比较:
$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);
答案 2 :(得分:0)
strtotime($curdate) < strtotime($start_datetime)
strtotime()返回一个int,表示自1970年1月1日以来经过的Seconds 这意味着如果$ curdate日期是“2011-01-01 12:00:00”并且$ start-datetime是“2011-01-01 12:00:01”那么$ start-datetime比$ curdate更大,因为strtotime返回$ start-datetime的整数,正好比$ curdate大一个。
答案 3 :(得分:0)
直接日期时间比较不会失败。你可以做到这一点。
时间戳比较会更快,但我不认为在PHP应用程序中可以寻找性能上的微观改进,而且你必须考虑到2030的bug。
答案 4 :(得分:0)
我更喜欢比较'自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
}