2013-07-08 67 views
-1

我從表單中取出兩個日期格式爲mm/dd/yyyy格式。現在我將這兩個日期轉換爲等效的UNIX時間戳值,並創建一個SQL查詢以從數據庫中獲取落入此範圍的記錄。小代碼snippett爲此如下給出:如何從PHP中的UNIX時間戳獲取正確的日期?

if($request['from_date']!='' && $request['to_date']!='') { 
      $from_date = clean($request['from_date']); 
      $to_date = clean($request['to_date']);  

      list($fd, $fm, $fy) = explode('/', $from_date); 
      list($td, $tm, $ty) = explode('/', $to_date); 

      $mk_from_time = mktime(0, 0, 0, $fm, $fd, $fy); 
      $mk_to_time = mktime(0, 0, 0, $tm, $td, $ty); 
$date_range = " (user_reg_date BETWEEN ".$mk_from_time." AND ".$mk_to_time.") "; 
} 

格式正確的查詢與其他代碼生成並給我的結果。但我的問題是,當我輸入兩個日期即, 01/07/2013 and 31/07/2013並從DB獲取記錄,那麼它實際上是給記錄from date 01/07/2013 to date 30/07/2013。實際上預計會有記錄,直到31/07/2013。如果我將日期記錄爲01/08/2013,那麼它會根據我的要求將記錄返回至31/07/2013。簡而言之,手段to date滯後一天。任何人都可以幫我解決這個問題嗎?提前致謝。另一個重要的是DB中的字段user_reg_date包含UNIX時間戳格式中的所有值。

回答

1

嘗試使用

$ mk_to_time = mktime(23,59,59,$ TM,$ TD,$ TY);

+0

感謝您的回答。但是,你能解釋我在哪裏使用你的代碼snippett。從開始日期或迄今爲止,或兩者兼而有之 – PHPLover

+0

你有一個行'$ mk_to_time = mktime(0,0,0,$ TM,$ TD,$ TY);'將其更改爲'$ mk_to_time = mktime(23,59,59,$ TM,$ TD,$ ty);' – RiggsFolly

+0

我按照你所說的改變了路線,但仍然落後了5個半小時。意思是,如果我給出的日期爲2013年7月31日,並將其轉換爲用戶可讀的格式,它給予週三,2013年7月31日18:29:59 GMT。意味着它仍然落後5個半小時。你能幫我嗎? – PHPLover

相關問題