PHP.ini中的PHP时区未应用


PHP timezone from php.ini not being applied

由于某些原因,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