Bin*_*ing 5 php timezone datetime
是否有 PHP 函数可以在时区名称(例如此处找到的名称: http: //php.net/manual/en/timezones.america.php)和“值”(例如东部标准时间或太平洋时间)之间进行转换夏令时?
不想在区域之间进行转换,只需获取给定 America/New_York(或其他)名称的 EST、PDT 等名称。我发现的唯一类似的问题是针对不同的语言。
如果您安装了PHP 国际化包,您可以执行以下操作:
\n\nIntlTimeZone::createTimeZone(\'America/New_York\')->getDisplayName()\n
Run Code Online (Sandbox Code Playgroud)\n\n默认情况下,这将返回CLDR英语标准长形式,在本例中就是如此"Eastern Standard Time"
。您可以在此处找到其他可用选项。例如:
IntlTimeZone::createTimeZone(\'Europe/Paris\')->getDisplayName(true, IntlTimeZone::DISPLAY_LONG, \'fr_FR\')\n
Run Code Online (Sandbox Code Playgroud)\n\n以上将返回"heure avanc\xc3\xa9e d\xe2\x80\x99Europe centrale"
中欧夏令时的法语。
请小心传递第一个参数,就好像true
DST 对相关日期和时间有效,否则false
。这可以通过以下技术来说明:
$tz = \'America/New_York\';\n$dt = new DateTime(\'2016-01-01 00:00:00\', new DateTimeZone($tz));\n$dst = $dt->format(\'I\');\n$text = IntlTimeZone::createTimeZone($tz)->getDisplayName($dst);\necho($text); // "Eastern Standard Time"\n
Run Code Online (Sandbox Code Playgroud)\n\n\n\n请注意,这些字符串旨在显示给最终用户。如果您的目的是将它们用于某些编程目的,例如调用另一个 API,那么它们是不合适的 - 即使某些字符串的英文版本碰巧对齐。例如,如果您要将时区发送到 Windows 或 .NET API,或者发送到 Ruby on Rails API,这些字符串将不起作用。
\n