2009-09-23 6 views
7

PHPでは、ホスティングプロバイダがどこにあるのかをハードコーディングすることなく、現在の時刻をUTCでどのように取得できますか?strtotimeを使用して現在のUTC時刻を正確に取得するにはどうすればよいですか?

例えば、私は次のことを試してみました:

time() + strtotime('January 1, 2000')-strtotime('January 1, 2000 UTC') 

、それが1時間進んだ実際のUTC時間のある時に報告することを見つけます。私は同じ結果を持つ2つの異なるタイムゾーンで2つの異なるホスティングプロバイダでこれを試しました。

UTC時間を正確に取得するための信頼できる方法がありますか?

私はPHP 4.4.9に制限されているので、PHP5に追加された新しいタイムゾーンのものを使用することはできません。

ありがとうございます。

+0

、あなたがそうであるように同じ時間帯でのホスティングプロバイダですか?表示する日付( "T")の出力をチェックしてみてください。 – Tom

+1

@トム:OPが彼のプロバイダが特定の地域にいると想定できるなら、それはうまくいくでしょう。 'date(" T ")'の問題は、北米ESTやオーストラリアESTなどの "EST"の問題です。 – MitMaro

+0

私はちょうど情報を釣っていました。すべての場合に機能するように思われるソリューションについては、私の答えを参照してください。時間帯についてのあなたの意見。私のすべてのサーバーが米国にあるので、これまで対処していたことはありませんでした。 – Tom

答えて

8

これは私にとってはうまくいくようです。もちろん、私は日付ができたことを忘れてしまった、最初の頃

$t = time(); 
$x = $t+date("Z",$t); 
echo strftime("%B %d, %Y @ %H:%M:%S UTC", $x); 

これはPHP 4のために働く必要があり、私のすべてのサーバーは、PHP 5を持っているので、PHP 4の上にそれをテストする必要がありますが、マニュアル主張ますtime()とdate()の呼び出しの間で変更されます。

+0

'date(" T ")'を使う方がずっと良いです。 +1の価値があります。 – MitMaro

+0

ありがとう、私はあなたに上記のコメントの+1を与えていた。 – Tom

+0

ありがとう、それは動作します。 :) – Dave

14
$time = new DateTime('now', new DateTimeZone('UTC')); 
echo $time->format('F j, Y H:i:s'); 
+0

あなたの答えをありがとう。これはPHP 4.4.9では機能しませんが、他のPHP 5.2でもうまく動作します。 – Dave

+0

申し訳ありませんが、あなたの質問を読んだとき、明らかに私の読書は分かりませんでした。とにかく助けてくれてうれしい。 – GZipp

+2

であったが、それにもかかわらず、他のpeopl – shealtiel

0
$utcTtime = gmmktime(); 
$unixTimestamp = time(); 

gmmktime:GMT日付

0

Unixのタイムスタンプを取得していPHP 4.4.9のためにこの作品?

echo gmdate('Y-m-d H:i:s', time()); 

たり、特定の日付のためにそれをしたい場合:ちょうどチェックする

$time = strtotime('January 1, 2000 UTC'); 
if($time){ 
    echo gmdate('Y-m-d H:i:s', $time); 
} 
関連する問題