1

mktime がエポック (1970 年 1 月 1 日 00:00:00 GMT) からの秒数を返すことは既に知っているので、タイムスタンプは GMT ベースです。

学校フェア用の PHP Web アプリがあり、Kohana 3.2 を使用して作成されています。見本市が予定されているとき、見本市の「日付」フィールドに保存されている mktime を使用してタイムスタンプを作成します。フェアが始まる前にフェアを表示しようとすると、自動的にフェアのプロモーション ページに移動します。プロモーション ページを表示しようとしたときに、フェアが開始されている場合は、ビュー ページに移動します。2 つのチェックを行っていることがわかります。

プロモーション ページでは、PHP を使用して見本市のタイムスタンプを隠しフィールドに格納します。そのタイムスタンプを使用して JavaScript のカウントダウン ルーチンが呼び出され、見本市の日付と現在の時刻 (EST に変換) の間の残り時間のカウントダウンが開始されます。タイマーが 0 に達すると、フェアが開始されたことを意味し、ページはビュー ページにリダイレクトされます。

ビュー ページには、フェアが開始されたかどうかを確認するためのコードが設定されており、次のようになります。

if( mktime() < $fair->date ) Request::current()->redirect('/fair/promo/' . $id);

ただし、上記のステートメントが処理されると、タイマーがすぐにゼロになり、ビュー ページに戻ろうとするプロモーション ページにリダイレクトされます。大無限ループ。

プロモーションページでjavascriptを使用して時間を取得する方法は次のとおりです。

var st = srvTime();
var d = new Date(st);
var now = Math.round( d.getTime() / 1000);
now=now+3600; //adjust to EST

したがって、質問は mktime() に戻ります。php.net によると、「引数は右から左の順に省略できます。このように省略された引数は、ローカルの日付と時刻に従って現在の値に設定されます。」つまり、CST のサーバーで mktime() を呼び出すと、エポックから経過した秒数 = CST 時間 - エポック ???

4

1 に答える 1

1

引数は、右から左の順に省略できます。このように省略された引数は、ローカルの日付と時刻に従って現在の値に設定されます。

于 2012-10-25T03:11:30.000 に答える