PHP.ini的PHP时区未应用

时间:2013-08-23 14:32:53

标签: php date timezone

由于某种原因,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()获取正确的日期/时间?

1 个答案:

答案 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