2010-11-19 241 views
0

我是PHP的日期()和strtotime的新手,並一直試圖找出解決方案,這一天的大部分時間沒有真正的解決方案(我來了關閉,但無濟於事)。MySQL日期時間和當前日期時間函數

我所擁有的是一個典型的數據庫行,有一個'已提交'列,通過提交= NOW()(以日期時間格式)輸入。我試圖獲取當前日期時間,並在「x小時和x分鐘」中找到兩個值之間的差異。爲了讓事情變得更有趣一些,我的網絡服務器在時區之後是一小時。我試過了「date_default_timezone_set('EST');」它確實有助於完成直接的date()函數,但顯然無法幫助我處理已插入的日期時間。

$lastEntryDate = date('l, F dS Y', strtotime($entryDate)); 
$lastEntryTime = date('g:ia', strtotime($entryDate.'+1 hour')); 

$currDate = date('l, F dS Y'); 
$currTime = date('g:ia'); 

所以,試着做$ lastEntryTime - $ currTime,但顯然得到弄糟根據一天的時間(因爲它是24小時制,我相信)。

我搜索了一下,在論壇上發現了一些帖子,指出使用3600(一小時內的秒數),而且我仍然試圖圍繞這一點進行包裝。

有什麼基本我失蹤了?或者這是相當複雜的,因爲我認爲它是?

回答

1
$now = time(); 
$entrytime = strtotime($entryDate) + (60 * 60) //60 seconds times 60 minutes = 1 hour 

$difference = $now - $entrytime; 
$hours = floor($difference/(60 * 60)); 
$minutes = $difference - ($hours * 60 * 60); 
+0

這太棒了!使用上面的代碼,看起來它會返回時間之間的整個小時或整個分鐘。這是一個激動人心的人,你如何找到時間之間的幾分鐘?恩。 5小時34分鐘 – Brian 2010-11-19 04:44:54

+0

它稍微複雜一些,但基本上你可以把這兩個時間戳之間的差異化,然後通過將差值除以3600(60秒* 60 = 1小時)找到多少個小時,然後將餘數和把它除以60,給你分鐘。無論如何,我希望我的數學在那裏是正確的。希望這可以幫助。 – 2010-11-19 05:01:27

+0

Brian,'echo'$ hours hours $ minutes minutes「;'。我計算了小時和分鐘部分,但我沒有測試。這很簡單,如果它很混亂,你可以把它寫在紙上。您有幾秒鐘的時間,並通過反覆除以60得到相等的分鐘數或小時數。 – 2010-11-19 05:28:57

0

,可能會對你有所幫助的解決方案是,而不是使用MySQL現在運作爲什麼不把你的提交INT類型的字段,然後使用PHP time()函數存儲一個UNIX時間戳,然後在將其插入數據庫之前,只需在秒內添加1小時即可獲得時間戳。然後當你從你的表中檢索數據時,你應該能夠使用時間戳和php日期和時間函數來創建你想要的任何時間戳。這裏是一個關於php time()函數的鏈接,可能有幫助: http://php.net/manual/en/function.time.php

+0

謝謝!肯定會通過這個。謝謝!! – Brian 2010-11-19 04:35:37