我在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设置然后可能出现问题?
答案 0 :(得分:0)
好的,我遇到了问题,但我不知道为什么会出现这个问题
就像您在代码中看到的一样,是时区问题。 mktime
和strtotime
函数可识别时区/偏移量。另一方面,函数time()
不受时区偏移的影响。
如果您需要始终返回GMT / UTC日期的mktime()
,则可以使用gmmktime()
。