2016-05-10 8 views
1

タイムゾーン名(ここにあるもの:http://php.net/manual/en/timezones.america.phpなど)と東部標準時や太平洋夏時間などの「値」を変換するPHP関数はどこにもありますか?PHP:タイムゾーン名(例:America/New_York)からタイムゾーン値(例:東部標準時)を取得する方法は?

ゾーン間の変換を検討していない場合は、America/New_York(またはその他)の名前が付いたEST、PDTなどの名前を取得してください。 only similar question I foundは別の言語用です。

+0

どのような目的のためにですか?どの言語で?詳しく教えてください。 –

+0

目的はなぜ重要ですか?言語はPHPなので、タイトル、最初のパラグラフ、タグです。 – Bing

+0

私は、これをユーザーに表示していますか?英語で?あるいは、別のAPIに値を渡していますか? –

答えて

2

は、次の操作を実行できます。

IntlTimeZone::createTimeZone('America/New_York')->getDisplayName() 

これは、この場合に"Eastern Standard Time"で、デフォルトでCLDR英語の標準長い形式を返します。他のオプションは利用可能ですhereがあります。たとえば:

IntlTimeZone::createTimeZone('Europe/Paris')->getDisplayName(true, IntlTimeZone::DISPLAY_LONG, 'fr_FR') 

は、上記中央ヨーロッパ夏時間のためのフランスで"heure avancée d’Europe centrale"を返します。

問題の日時のDSTが有効な場合は、最初のパラメータをtrueにしてください。それ以外の場合はfalseとしてください。これは、以下の技術により例示される:

$tz = 'America/New_York'; 
$dt = new DateTime('2016-01-01 00:00:00', new DateTimeZone($tz)); 
$dst = $dt->format('I'); 
$text = IntlTimeZone::createTimeZone($tz)->getDisplayName($dst); 
echo($text); // "Eastern Standard Time" 

Working PHP Fiddle Here

これらの文字列は、エンドユーザに表示することを意図していることに注意してください。別のAPIを呼び出すなど、プログラム目的に使用することが意図されている場合は、一部の文字列の英語バージョンが整列しても適切ではありません。たとえば、タイムゾーンをWindows APIまたは.NET API、またはRuby on Rails APIに送信する場合、これらの文字列は機能しません。

1

あなたのリストの値が(http://php.net/manual/en/timezones.america.php)であることがわかっている場合は、次のようなことができます。もしあなたがPHP Internationalization Packageをインストールする場合

<?php 

$dateTime = new DateTime(); 
$dateTime->setTimeZone(new DateTimeZone('America/New_York')); 
echo $dateTime->format('T'); 

?> 
+0

Tは略語を書いているので、これは私が求めていたものですが、書かれていません。私は長い形を見ません。 (また、見ている人のために、これがここにあるように見えます:http://php.net/manual/en/function.timezone-abbreviations-list.php) – Bing

関連する問題