2015-07-19 42 views
1

我試圖獲取今天的日期,並將它與我的數據庫中的日期進行比較,但是我的數據庫中的日期以不同的形式返回,函數,所以如果我在if語句中比較它們,這些值總是會是假的。有沒有辦法讓我比較它們,以便它返回爲真?來自數據庫的日期以不同的形式返回

$date = date('y-m-d'); //date from date function ---> 15/07/19 
$dateFromDatabase; //date from database ---> 2015/07/19 

if ($date == $dateFromDatabase) { 
echo "It's the same day."; 
} 

回答

3

的strtotime

你必須在PHP一些偉大的功能,以您的人類可讀的日期轉換爲時間戳。

第一個魔術函數叫做strtotime(字符串到時間):給它你的日期,你得到一個UNIX時間戳!讓我們看一些例子:

echo strtotime('2008-04-12 13:24'); 
echo strtotime('12 april 2008 13:24'); 
echo strtotime('12.04.2008 13:24'); 

而且功能更強大,的strtotime可以識別一些關鍵詞:

echo strtotime('now'); 
echo strtotime('+4 days'); 
echo strtotime('+1 month'); 
echo strtotime('next monday'); 
echo strtotime('+2 weeks 3 days 4 hours 23 minutes'); 

的strtotime的第二個參數是時間戳記,它的默認值是實際的時間戳(時間() )。所以回聲strtotime('+ 4天')是相對於當前時間。當然,你也可以給你的mysql日期strtotime! (注意你也可以使用mysql函數UNIX_TIMESTAMP,它使用更多的資源)。

比較日期,它現在只是一個細節:

// your first date coming from a mysql database (date fields) 
$dateA = '2008-03-01 13:34'; 
// your second date coming from a mysql database (date fields) 
$dateB = '2007-04-14 15:23'; 
if(strtotime($dateA) > strtotime($dateB)){ 
    // bla bla 
} 

比子更好,不是嗎?!

這裏只是另一個例子,而不是相對於當前的日期,而是一個特定的日期:

strtotime('23 hours ago', strtotime('2005-04-13 14:00')); 

這平均23小時前相對於第二給定的日期,它必須是一個時間戳。

用戶手冊未提供支持日期格式的完整說明。 Strtotime('dd/mm/YYYY')不起作用,它僅適用於mm/dd/YYYY格式。

dd/mm/YYYY格式的日期,可以通過使用explode()函數將其轉換爲YYYY-mm-dd,但我認爲有更好的解決方案。

$date = '25/05/2010'; 
$date = str_replace('/', '-', $date); 
echo date('Y-m-d', strtotime($date)); 
+0

這可以幫助.. – Linus

+0

如果我做這樣的事情? $ date ='20'。$ date; – frosty

+1

該函數預期會給出一個包含英文日期格式的字符串,並將嘗試將該格式解析爲Unix時間戳(自1970年1月1日00:00:00 UTC以來的秒數), – Linus

相關問題