0

codeigniter を使用して、時間関連の関数を処理するモデルがあります。date_default_timezone_set('Europe/London');すべての時間関数がサーバー時間 (米国ベース) ではなくロンドン時間に基づくように使用します。ただし、サーバー時間を知る必要がある場合があります。タイムゾーン セットの前にコンストラクト内に変数を作成しようとしました$server_time = time();が、関数内でそれを参照すると、ロンドン時間が返されます。そのようです...

function __construct(){
    parent::__construct();
    // server time
    $this->server_time = time(); 

    // set base time for all php time() functions!
    date_default_timezone_set('Europe/London');
}

public function serverTime(){
   return $this->server_time; // returns London time not server time
}

実際の真のサーバー時間を取得するにはどうすればよいですか?

4

2 に答える 2

2

以下はdate、シェルでコマンドを実行します。

echo shell_exec( 'date' );

これにより、サーバーのコマンドラインで入力したかのように時間が表示されます。

于 2013-09-23T13:59:15.620 に答える
0

time() の実際の値ではなく、2 つのタイムゾーン間のオフセットを保存する必要があります。

function __construct(){
    parent::__construct();
    $diff_time = time(); 
    date_default_timezone_set('Europe/London');
    $this->diff_time = $diff_time-time(); 
}

public function serverTime(){
   return time()+$this->diff_time;
}
于 2013-09-23T14:01:28.193 に答える