繁体   English   中英

通过>和<运算符比较日期

[英]Comparing dates via > and < operators

在我的PHP代码中,我用UTC存储日期和时间,但我也使用mysql来存储日期时间(也在utc中)。

有没有什么方法可以使用大于和小于运算符的日期比较失败?

        $curdate=date('Y-m-d H:i:s');
        if($start_datetime>$curdate)

不。
他们没有办法失败。
为此目的故意制作Mysql日期格式。

没有任何理由可以将其转换为其他任何格式进行比较。

PHP:使用strtotime()将日期更改为UNIX时间戳,然后您可以进行比较。


MySQL的:

将date列的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);
strtotime($curdate) < strtotime($start_datetime)

strtotime()返回一个int表示自1970年1月1日以来经过的秒数。这意味着如果$ curdate日期为“2011-01-01 12:00:00”且$ start-datetime为“2011-01-01 12:00: 01“然后$ start-datetime大于$ curdate因为strtotime返回$ start-datetime的整数,它正好比$ curdate大一个。

直接日期时间比较不会失败。 你可以做到这一点。

时间戳比较会更快,但我不认为在PHP应用程序中可以寻找性能上的微观改进,而且你必须考虑到2030的bug。

我更喜欢比较'自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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM