2016-05-10 14 views
1

Gibt es irgendwo eine PHP-Funktion, die zwischen dem Namen der Zeitzone (wie dem hier gefundenen: http://php.net/manual/en/timezones.america.php) und dem "Wert" wie Eastern Standard Time oder Pacific Daylight Time?PHP: Wie bekomme ich den Zeitzonenwert (zB Eastern Standard Time) vom Zeitzonennamen (zB: America/New_York)?

Nicht um zwischen den Zonen zu konvertieren, erhalten Sie einfach die EST, PDT, etc. Namen der America/New_York (oder andere) Name. Die only similar question I found ist für eine andere Sprache.

+0

Zu welchem ​​Zweck? In welcher Sprache? Bitte erläutern. –

+0

Warum ist der Zweck wichtig? Die Sprache ist PHP, daher der Titel, der erste Absatz und das Tag. – Bing

+0

Ich meinte, zeigen Sie dies einem Benutzer? Auf Englisch? Oder übergeben Sie den Wert an eine andere API? –

Antwort

2

Wenn Sie Sie die PHP Internationalization Package installieren, können Sie folgendes tun:

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

Dies kehrt die CLDR Englisch Standard-Langform standardmäßig die "Eastern Standard Time" in diesem Fall ist. Sie können die anderen verfügbaren Optionen here finden. Zum Beispiel:

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

Die oben wird "heure avancée d’Europe centrale" zurück, die für mitteleuropäische Sommerzeit Französisch ist.

Achten Sie darauf, den ersten Parameter als true zu übergeben, wenn DST für das fragliche Datum und die fragliche Uhrzeit aktiv ist, oder andernfalls false. Dies wird durch die folgende Technik dargestellt:

$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

Bitte beachten Sie, dass diese Strings für die Anzeige an einen Endverbraucher bestimmt sind. Wenn Sie beabsichtigen, sie für bestimmte programmatische Zwecke zu verwenden, z. B. für den Aufruf einer anderen API, sind sie nicht geeignet - selbst wenn die englischen Versionen einiger Zeichenfolgen übereinstimmen. Wenn Sie beispielsweise die Zeitzone an eine Windows- oder .NET-API oder an eine Ruby on Rails-API senden, funktionieren diese Zeichenfolgen nicht.

1

Wenn Sie den Wert aus Ihrer Liste um (http://php.net/manual/en/timezones.america.php) wissen, können Sie etwas wie tun.

<?php 

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

?> 
+0

Das ist fast, was ich gefragt habe, da T die Abkürzungen gibt, aber nicht geschrieben. Ich sehe die Long-Form aber nicht. (Es sieht auch so aus, als ob das hier gefunden wurde, für jeden der http://php.net/manual/en/function.timezone-abbreviations-list.php) – Bing

Verwandte Themen