2010-07-06 109 views
1

我試圖做一個函數,將檢查數據庫中的什麼是php日期。如果當前日期(YYYY-MM-DD HH:MM:SS)在存儲的數據庫日期之後24小時,則它將繼續,否則它將不執行任何操作。如果php日期是存儲mysql日期後的24小時

以下是我正在努力得到它的工作,但不是100%確定如何:

$now = date("Y-m-d H:i:s"); 

foreach($results as $item) { 
    if ( /*item date is 24 hours or more earlier than $now*/) { /* this is what I'm not sure how to do */ 
    //do something 

    } else { 
    //do nothing 
    }; 
}; 

如果有人可以幫助我得到這個工作,我會非常感激。我只是不知道如何將$ item-> date與$ now進行比較,看看$ item-> date是否在$ now後面24小時或更長。

回答

3
foreach($results as $item) { 
    if (time() >= strtotime($item['date']) + 86400) { 
    // current time is 86400 (seconds in one day) or more greater than stored time 
    } else { 
    //do nothing 
    }; 
}; 

注意,如果所保存的日期是不是在同一個時區的服務器,您需要惹時區 - 看here對於初學者。

請注意,我將日期和時間存儲在MySQL中作爲Unix時間戳,以避免這些問題中的一些。我知道這不是很好的數據庫練習,但是PHP無論如何都把時間存儲爲Unix時間戳。

7

您可以使用strtotime代替日期數學。我個人認爲它讀得好多了。

if (strtotime($item->date) <= strtotime('-1 day')) { 
    // date is more than or equal to 24 hours old 
} 
+0

如果$ item-> date是格式爲「YYYY-MM-DD HH:MM:SS」的字符串,那麼a <=比較沒有意義,它可能也需要strtotime()。至少我是這樣解釋數據庫中日期的格式的。 – thomasrutter 2010-07-06 02:57:06

+0

你是對的。你需要'strtotime($ item-> date)'。我更新了我的代碼。 – 2010-07-06 03:03:55