簡體   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