是否有任何PHP函数可以在时区名称(例如在此处找到的名称:http://php.net/manual/en/timezones.america.php)和“值”之间进行转换,例如Eastern Standard Time或Pacific Daylight Time?
不想在时区之间进行转换,只是想在给定美国/纽约(或其他)名称的情况下获取EST,PDT等名称。我找到的唯一类似的问题是针对另一种语言的。
是否有任何PHP函数可以在时区名称(例如在此处找到的名称:http://php.net/manual/en/timezones.america.php)和“值”之间进行转换,例如Eastern Standard Time或Pacific Daylight Time?
不想在时区之间进行转换,只是想在给定美国/纽约(或其他)名称的情况下获取EST,PDT等名称。我找到的唯一类似的问题是针对另一种语言的。
IntlTimeZone::createTimeZone('America/New_York')->getDisplayName()
默认情况下,这将返回 CLDR 的英文标准长格式,本例中为 "Eastern Standard Time"
。您可以在 此处 找到其他可用选项。例如:
IntlTimeZone::createTimeZone('Europe/Paris')->getDisplayName(true, IntlTimeZone::DISPLAY_LONG, 'fr_FR')
"heure avancée d’Europe centrale"
,它是中欧夏令时的法语翻译。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"
请注意,这些字符串旨在显示给最终用户。如果您的意图是将它们用于某些编程目的,例如调用另一个API,则它们不适用,即使一些字符串的英文版本恰好对齐。例如,如果您要将时区发送到Windows或.NET API或Ruby on Rails API,则这些字符串将无法使用。
<?php
$dateTime = new DateTime();
$dateTime->setTimeZone(new DateTimeZone('America/New_York'));
echo $dateTime->format('T');
?>