PHP时区冲突

时间:2013-09-18 12:32:02

标签: php timezone

我在php.ini目录中设置了date.timezone设置,如下所示

date.timezone = "Asia/Kolkata"

当我使用以下参数运行mktime时

mktime(0,0,0,10,11,1993);

我得到的时间戳是752907600

但当我在mktime函数之前使用date_default_timezone_set('Asia / Kolkata'); 它给了我预期的输出时间戳,即752869800

如果两个时区都相同,那么为什么输出会不同?

---------------- EDIT --------------------------

好的,我遇到了问题,但我不知道为什么会出现这个问题

echo date_default_timezone_get().'<br />';
echo mktime(0,0,0,11,10,1993).'<br />';
date_default_timezone_set('Asia/Kolkata');
echo date_default_timezone_get().'<br />';
echo mktime(0,0,0,11,10,1993);

输出

EST5EDT
752907600
Asia/Kolkata
752869800

我已正确设置.ini设置然后可能出现问题?

1 个答案:

答案 0 :(得分:0)

  

好的,我遇到了问题,但我不知道为什么会出现这个问题

就像您在代码中看到的一样,是时区问题mktimestrtotime函数可识别时区/偏移量。另一方面,函数time()不受时区偏移的影响。

如果您需要始终返回GMT / UTC日期的mktime(),则可以使用gmmktime()