0

重複の可能性:
PHP でのタイムゾーン変換

これが私がやりたいことの簡単な例です。

$timeタイムスタンプを含む変数があります。

今、それを異なるタイムゾーンのタイムスタンプに変換したい

date_default_timezone_set()関数を複数回使用せずにこれを行う方法はありますか?

私の意見は混乱を招き、意味が少ないように見えるかもしれないことを知っているので、コメントで疑問を明確にしてください.

たとえば、それを変更するための呼び出しが 100 回ある場合:-

  1. それは私の他の機能に影響を与えます
  2. 関数名はそのデフォルトを示唆しています
  3. スクリプトの速度が低下します。
4

2 に答える 2

2

DateTimeオブジェクトを使用し、 SetTimezone()メソッドを使用して必要に応じてタイムゾーンを設定できます。

たとえば、次のコード:-

$datetime = new DateTime();
var_dump($datetime->getTimezone()->getName());
var_dump($datetime->format(DateTime::ISO8601));
$datetime->setTimezone(new DateTimeZone('UTC'));
var_dump($datetime->format(DateTime::ISO8601));
$datetime->setTimezone(new DateTimeZone('America/New_York'));
var_dump($datetime->format(DateTime::ISO8601));

次の出力をくれました:-

string 'Europe/London' (length=13)
string '2012-06-20T20:33:29+0100' (length=24)
string '2012-06-20T19:33:29+0000' (length=24)
string '2012-06-20T15:33:29-0400' (length=24)

私の開発サーバーのデフォルトのTZはEurope/Londonであるため、結果がわずかに異なる場合があります。

サポートされているタイムゾーンのリストはここにあります。

于 2012-06-20T18:16:20.047 に答える
0

さまざまなタイムゾーンで日付を作成するために行われた何かのサンプルを提供するために..これが私が行ったことです

function create_date($format, $time, $offset = -6)
{   
    return gmdate($format, $time + (3600 * $offset));
}

これをタイムスタンプ形式で保持したい場合は、次のように変更してください。

function create_date($time, $offset = -6)
{   
    return $time + (3600 * $offset);
}

アップデート:

テキスト形式でタイムゾーンを入力する必要がある場合は、PHPタイムゾーンリストの質問のリストを使用し、関数でその配列を単純にルックアップして、この機能を実現するためのオフセットを取得します。

知らせ:

これが正しく機能するには、元の時刻がGMT時刻である必要があります

于 2012-06-20T18:13:46.853 に答える