是否有PHP函数可以在时区名称(例如在此处找到的名称:/manual/en/timezones.america.php)和“值”(例如东部标准时间或太平洋夏令时间)之间进行转换?
不想在区域之间进行转换,只需给定America / New_York(或其他)名称即可获得EST,PDT等名称. only similar question I found用于另一种语言.
解决方法:
IntlTimeZone::createTimeZone('America/New_York')->getDisplayName()
默认情况下,这将返回CLDR标准英语长格式,在这种情况下为“东部标准时间”.您可以找到其他可用的选项here.例如:
IntlTimeZone::createTimeZone('Europe/Paris')->getDisplayName(true, IntlTimeZone::DISPLAY_LONG, 'fr_FR')
上面将返回“ heureavancéed’Europe centrale”(法语为“中欧夏令时”).
如果DST在所讨论的日期和时间有效,请小心将第一个参数传递为true,否则将其传递为false.以下技术说明了这一点:
$tz = 'America/New_York';
$dt = new DateTime('-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,timezone,datetime
来源: https://codeday.me/bug/1013/1905211.html
PHP获取美国东部时间的方法 PHP:如何从时区名称(例如America / New_York)中获取时区值(例如:东部标准时间)?...