2011-04-11 86 views
0

我試圖在兩個時間間隔之間獲取結果。我之前使用Y-m-d構建的另一個Web應用程序完成了此操作,但現在遇到了Y-m-d H:i:s的問題。代碼如下(屏蔽出於安全原因,當然):使用日期時間獲取結果

$m5b = date('Y-m-d H:i:s',mktime(0,0,0,0,0,0,date('Y'),date('m'),date('d'),date('H'),date('i')-5,date('s'))); 
$npm = date('Y-m-d H:i:s',mktime(0,0,0,0,0,0,date('Y'),date('m'),date('d'),date('H'),date('i')+1,date('s'))); 
$gm = mysql_query("SELECT * FROM acm WHERE lgt !='0000-00-00 00:00:00' AND logged BETWEEN '$m5b' AND '$npm'"); 

回答

2

我會認真建議對PHP的strtotime()功能閱讀起來如果您使用PHP5的最新版本,則使用DateTime對象。這應該清理你的代碼沒有結束。

隨着的strtotime()

$t = strtotime('+5 mins'); 
$mysqlFormatted = date('Y-m-d H:i:s', $t); 

隨着DateTime類

$t = new DateTime(); 
$t->modify('+5 mins'); 
$mysqlFormatted = $t->format('Y-m-d H:i:s'); 
+0

謝謝! strtotime完全放棄了我的想法。我不知道爲什麼我沒有像以前那樣在另一個項目中使用strtotime函數。謝謝:)另外,我剛剛學到了一些新東西。我不知道你可以用這樣的+5分鐘。我通常以更長的路線來做。我每天總是學到東西。 – yanike 2011-04-11 22:24:53

+0

+1最佳解決方案。 – oblig 2011-04-11 22:26:18

1

在我看來,要傳遞太多的參數mktime()你逝去的12名PARAMS?

編輯: 從oblig的答案使用代碼,它實際上應該是:根據php.net

$m5b = date("Y-m-d H:i:s" , (time() - (5*60))); // 5 mins in seconds 
$npm = date("Y-m-d H:i:s" , (time() + (1*60))); 
+0

燁:'警告:mktime()預計至多7個參數,12 given' – oblig 2011-04-11 21:39:48

+0

確定。所以我會用這個。日期('Y'),日期('m'),日期('d'),日期('H'),日期('i'),日期('Y' 'S')));這是做這個2011-04-11 14:04:11。現在的問題是它沒有給出正確的時間,並且它也不斷增加我從回聲中看到的每個負載的時間。 – yanike 2011-04-11 21:53:55

+0

參數順序錯誤。看我的帖子。 :) – oblig 2011-04-11 22:05:15

0

mktime:

int mktime ( 
    [ int $hour = date("H") 
    [, int $minute = date("i") 
    [, int $second = date("s") 
    [, int $month = date("n") 
    [, int $day = date("j") 
    [, int $year = date("Y") 
    [, int $is_dst = -1 ]]]]]]])