3

うまくいけば、誰かが私が抱えている問題の原因に気付くでしょう.

「ヨーロッパ/ヘルシンキ」などの他のすべてのタイムゾーンでは、以下のオフセット計算は正しい値を返しますが、何らかの理由で「Etc/GMT+2」スタイルのタイムゾーンでは負の値を取得し、その逆も同様です (たとえば、Etc/GMT-2 では正の値、7200)。

$dateTimeZone = new DateTimeZone('Etc/GMT+2');
echo $dateTimeZone->getOffset(new DateTime("now", new DateTimezone( 'UTC' )));

予想: 7200 結果: -7200

4

2 に答える 2

5

Etc/GMT+2タイムゾーンは、そうでなければ「GMT -2」と呼ばれるか、のように表され<date time>-02:00ます。

これは、POSIX がこれらのタイプのタイムゾーン オフセットを表す方法によるものです。

オフセットは、協定世界時の値を取得するために現地時間に追加する必要がある時間値を指定します。[+|-]hh[:mm[:ss]] のような構文があります。これは、ローカル タイム ゾーンが本初子午線の西の場合は正、東の場合は負です。時間は 0 から 23 の間、分と秒は 0 から 59 の間でなければなりません。

TZ変数から。

と:

数値のタイム ゾーンの省略形は通常、UTC の東側の時間をカウントします。たとえば、日本は +09、ハワイは -10 です。ただし、POSIX TZ 環境変数は反対の規則を使用します。たとえば、日本とハワイにはそれぞれ TZ="JST-9" と TZ="HST10" を使用できます。tz データベースが利用可能な場合、代わりに TZ="Asia/Tokyo" や TZ="Pacific/Honolulu" などの設定を使用することをお勧めします。これにより、混乱が回避され、古いタイム スタンプがより適切に処理され、他のタイムスタンプからより適切に隔離されるためです。今後のルール変更。ただし、POSIX TZ を「GMT-9」のような値に設定しないでください。これは、現地時間が UTC より 9 時間進んでおり、タイム ゾーンが「GMT」と呼ばれていると誤って主張するからです。

タイム ゾーンと夏時間データのソースから- 時間表記。

于 2011-03-17T13:30:51.760 に答える
1

http://www.php.net/manual/en/timezones.others.php#64310から

プラス記号とマイナス記号 (+/-) は直感的ではありません。例えば、

「Et/GMT-10」は、実際にはタイムゾーン「(GMT+10:00) キャンベラ、シドニー、メルボルン」を指します。

于 2011-03-17T13:23:29.440 に答える