Если вы устанавливаете PHP Internationalization Package, вы можете сделать следующее:
IntlTimeZone::createTimeZone('America/New_York')->getDisplayName()
Это вернет CLDR английский стандарт-длинную форму по умолчанию, что в данном случае "Eastern Standard Time"
. Вы можете найти другие доступные опции here. Например:
IntlTimeZone::createTimeZone('Europe/Paris')->getDisplayName(true, IntlTimeZone::DISPLAY_LONG, 'fr_FR')
выше вернется "heure avancée d’Europe centrale"
, который французский язык для Центральной Европы летнее время.
Будьте осторожны, чтобы передать первый параметр как true
, если DST действует в отношении даты и времени, или 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 или .NET API или в Ruby on Rails API, эти строки не будут работать.
С какой целью? На каком языке? Пожалуйста, дополните. –
Почему цель имеет значение? Язык - это PHP, отсюда заголовок, первый абзац и тег. – Bing
Я имел в виду, вы показываете это пользователю? На английском? Или вы передаете значение в другой API? –