【发布时间】:2017-04-11 02:19:05
【问题描述】:
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。
【问题讨论】:
-
开头的
A是怎么回事?如果您只使用EST作为您的时区,那么它不是使用Australia/NSW时区,而是使用一些北美时区(东部标准时间)。您应该得到AEST或AEDT,其中一个是标准时间,另一个是白天时间 -
你为什么要在这里做一个全球性的?你不应该通过时区吗?如果您希望它始终默认为
Australia/NSW,那么您应该更新您的 php.ini 以设置默认时区,或者如果无法编辑 php.ini 或将date_default_timezone_set('Australia/NSW');添加为代码中的第一行不受欢迎。 -
@Augwa 我可以用什么来找出为什么它不使用
AEST或AEDT?使用global是一种习惯,很难改哈哈,而且我也不知道它是在哪里声明的。 -
可能是因为 $city 是别的东西。使用全局变量会降低代码的可预测性。
$dateTime->format('e');返回什么?我的猜测可能是America/New_York或其他一些 EST 时区。
标签: php