2017-11-23 9 views
1

タイムゾーン形式を-06:00ではなく-6にすることを試みていますが、これを把握することはできません。コロンが付いていないタイムゾーン形式

私の現在のコードは、だから私は、次を使用して、これを変換しようとしています-21600

として(私は中央の時間で午前以降)形式を出力...

$time_offset_get = new \DateTime('now', new DateTimeZone(America/Chicago)); 
$conn_timezone_offset = $time_offset_get->format('P'); 

しかし、もちろん、この($ conn_timezone_offset)が私に-06:00を与えている これを正しく行うための別のフォーマットコードがありますか、それとも私が間違っているかです。

全体的に、アメリカ/シカゴや3桁のタイムゾーンコードなどのタイムゾーンオフセット名を、PHPを使用してコロンのないオフセットに変換しようとしています。

+0

で値を分割 '時にはそれが-6だからアメリカ/ Chicago' *は、数で表現することができない、そして時にはそれがです - 5。 [タイムゾーンタグwiki](https://stackoverflow.com/tags/timezone/info)、特に「タイムゾーン!=オフセット」という部分を読んでください。 –

+0

私はこれを知っています...私はそれが夏時間であるかどうかに基づいて加算または減算する追加の設定を持っています。私はちょうど数字の数字で最初のタイムゾーンを取得しようとしています。 – user2284703

+0

夏時間の節約は、同じタイムゾーン内であっても、異なるタイムゾーンでは異なるし、歴史の異なる時間にもかなり異なっています。これは、タイムゾーンを数字ではなく識別子として維持する全体的なポイントです。 –

答えて

1

使用DateTime::getOffset

失敗の成功またはFALSEにUTCからにタイムゾーンのオフセットを返します。

時間でオフセットを取得するには、単に3600

$now = new \DateTime('now', new DateTimeZone('America/Chicago')); 
$offset = $now->getOffset(); 
if ($offset !== false) { 
    $offset = round($offset/3600); 
} else { 
    // the error handling here 
} 
+0

ありがとうございます!それがまさに私が必要としていたものです。 – user2284703

+0

よろしくお願いいたします。@ user2284703 – camelsWriteInCamelCase

関連する問題