由于某些原因,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()
获得正确的日期/时间?
如果我在您的问题中理解尊重的含义,您会怀疑date_default_timezone_get()
没有返回ini设置。你可以通过在获取操作之前拨打这条线路来改变这一点:
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