2

PHPのDateTimeオブジェクト(より具体的には、DateTimeZoneオブジェクト)は、多くのタイムゾーンをサポートしています。それはすべて素晴らしいことですが、GMTオフセットをタイムゾーンとして渡す方法はありますか?

単純に時間を加算または減算して数学を適用することは可能ですが、組み込みの堅牢な方法があるかどうか(または、このために独自の抽象化レイヤーを作成する必要があるかどうか)疑問に思いました。

GMT+NTL; DR PHPのDateTimeまたはDateTimeZoneオブジェクトのタイムゾーンとして値を渡すにはどうすればよいですか?

4

3 に答える 3

2

あなたはこれを行うことができます:

$tz = new DateTimeZone('etc/GMT+2');

しかし、この警告があります:

ここにリストされているタイムゾーン(UTC以外)は使用しないでください。下位互換性のある理由でのみ存在します。

リストは1時間のみをサポートします。一部のユーザーは、時間単位で調整されていないタイムゾーンに住んでいる可能性があります。また、ユーザーがUTCオフセットを介して時刻を選択する場合、夏時間/夏時間の間に年に2回変更する必要があることに注意してください。場所で選択すると、その必要がなくなります。

于 2012-05-12T19:42:04.483 に答える
1

「Etc/GMT??」を使ってみてください http://php.net/manual/timezones.others.phpにリストされているタイムゾーン

残念ながら、これらの値は「下位互換性の理由」としてのみマークされていますが、これを行う他の方法がない場合は、これらの値を使用することをお勧めします。これらの値は、ニューファンドランドなどの一部の地域で使用される30オフセットをカバーしていないため、後で問題が発生することに注意してください。

もう1つのオプションは、array()を手動で作成し、各タイムゾーンをその領域のどこかにあるタイムゾーン名にマッピングすることです。

array(
    0 => "UTC",
    1 => "Europe/Paris",
    ...
)
于 2012-05-12T19:44:07.413 に答える
0

これは、DateTimeとsetTimestampを使用して行うことができます

時間の形式は次のようになりますSun, 13 May 2012 01:07:00

$currentDate = new DateTime();

$currentDate->setTimestamp(strtotime( $time.' GMT+0400'));

:DSTに注意する必要があります

于 2012-05-12T19:44:15.223 に答える