5

DateTimeZoneコンストラクターは地域名のみを受け入れます。

new DateTimeZone('Europe/London');

UTC からのオフセットではありません:

new DateTimeZone('+01:00'); // Unknown or bad timezone (+01:00)

ただし、 DateTime からそのような DateTimeZone を取得することは可能です:

(new DateTime('2012-12-28T00:00:00+01:00'))->getTimezone()->getName(); // +01:00

だから、これは少し奇妙です。オフセットから DateTimeZone を直接取得する方法はありますか?

4

4 に答える 4

5

Rafał's answerに加えて、これまでに見つけた最も簡単な方法は次のとおりです。

DateTime::createFromFormat('O', '+01:00')->getTimezone();

編集

これは、PHP 5.5.10 で修正されたバグです。それは今動作します!

于 2012-12-28T11:47:39.343 に答える
1

この機能をチェックしてください。

http://pl1.php.net/manual/en/function.timezone-name-from-abbr.php

時間を秒に変換し、2 番目のパラメーターとして渡す必要があります。

通り。のようにnew DateTimeZone(timezone_name_from_abbr('', 3600, 0))動作するはずです。

于 2012-12-28T11:22:55.250 に答える
0

私はあなたが行きたい事前定義された方法があるとは思わない. ただし、オフセットを追加して日付と時刻を返すグローバル関数を宣言すると、役立つ場合があります。例 :

function getDateTime($format="dd-mm-YY"){

$currDate= date($format);

$currDate=date($format,strtotime("+1 day",$currDate); // or whatever needed instead of +1 day

}
于 2012-12-28T11:30:47.843 に答える