由于某种原因,date()
功能未输出时区调整的日期/时间。在调试中,我发现了一个奇怪的差异。我的时区在php.ini
中定义为America/New_York
。当我这样称呼时:
echo ini_get('date.timezone');
我得到America/New_York
,这是我所期待的。但是,当我这样称呼时:
echo date_default_timezone_get();
我得到UTC
。这似乎是date()
方法在UTC时区中返回时间的原因。为什么会这样?如何让PHP尊重php.ini
中的时区?
更新
我最终只想从date('Y-m-d G:i:s')
获得时区调整时间。由于我的时区是在php.ini中设置的,如何从date()
获取正确的日期/时间?
答案 0 :(得分:0)
如果我在你的问题中理解尊重的含义,你会想知道date_default_timezone_get()
没有返回ini设置。您可以通过在get操作之前调用此行来更改它:
date_default_timezone_set(ini_get('date.timezone'));
参见示例#2从手册中获取时区的缩写,其中包含:
<?php
date_default_timezone_set('America/Los_Angeles');
echo date_default_timezone_get() . ' => ' . date('e') . ' => ' . date('T');
以上示例将输出:
America/Los_Angeles => America/Los_Angeles => PST