PHP
$city = "Australia/NSW";
function get_timezone_abre()
{
global $city;
$dateTime = new DateTime();
$dateTime->setTimeZone(new DateTimeZone($city ));
return 'A'.$dateTime->format('T');
}
结果
AEST
不确定这是否会显示夏令时已经开始,有人可以澄清一下吗?
查看此链接what-are-the-standard-timezone-abbreviations。
有人可以建议更好的方法(包括夏令时)吗?
添加阅读材料
Australia DST timezone abbreviation incorrect when using date_default_timezone_set
EST
源自使用较旧的php lib。答案 0 :(得分:2)
澳大利亚/新南威尔士州不是有效的时区标识符。澳大利亚的有效时区标识符为:
[299] => Australia/Adelaide
[300] => Australia/Brisbane
[301] => Australia/Broken_Hill
[302] => Australia/Currie
[303] => Australia/Darwin
[304] => Australia/Eucla
[305] => Australia/Hobart
[306] => Australia/Lindeman
[307] => Australia/Lord_Howe
[308] => Australia/Melbourne
[309] => Australia/Perth
[310] => Australia/Sydney
您可以使用 DateTimeZone::listIdentifiers()
找到此列表(请参阅reference)。
Australia/NSW
有效,但此评论here表示它是为了向后兼容而包含的,可以删除。
此代码应该满足您的需求,它也会考虑夏令时的变化:
<?php
$city = "Australia/NSW";
$timezone = new DateTimeZone($city);
$date_time = new DateTime('now', $timezone);
echo $date_time->format('T') . PHP_EOL;
echo $date_time->modify('+6 months')->format('T');
这将输出:
AEST
AEDT
在这里演示:https://eval.in/772564
答案 1 :(得分:1)
试试这个。
date_default_timezone_set('Europe/Sofia');
echo date_default_timezone_get(); // Europe/Sofia
echo ' => '.date('T'); // => EET