2011-04-11 13 views
0

私は2つの時間間隔の間に結果を取得しようとしています。私はちょうどY-m-dを使って構築した別のWebアプリケーションでこれをやっていますが、今はY-m-d H:i:sに問題があります。以下のコードは、(セキュリティ上の理由から、もちろんマスクされる):datetimeの結果を取得する

$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オブジェクト。これはコードの終わりをきれいにするはずです。 `警告:DateTimeのクラス

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

ありがとう! strtotime完全に私の心を滑り込ませた。なぜ私は別のプロジェクトで前と同じようにstrtotime関数を使用しなかったのか分かりません。ありがとう:)また、私はちょうど新しいことを学びました。私はあなたがそのような+5分を使うことができるのか分からなかった。私はいつもより長い道のりでそれをやります。私はいつも毎日何かを学びます。 – yanike

+0

+1ベストソリューション。 – oblig

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

うんとのstrtotimeで

()

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

はmktime()は最大で7つのパラメータは、[OK]を12 given' – oblig

+0

を期待。だから私はこれを使うだろう。日付( 'Y')、日付( 'm')、日付( 'd')、日付( 'H')、日付( 'i')、日付's'))));これは2011-04-11 14:04:11を実行します。今問題は、それが正しい時間を与えていないということです。また、エコーから見るものからそれぞれの負荷に多くの時間を追加し続けます。 – yanike

+0

パラメータの順序が間違っています。私のポストを参照してください。 :) – oblig

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 ]]]]]]])