0

我在 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

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

- - - - - - - - 编辑 - - - - - - - - - - - - -

好的,我遇到了问题,但我不知道为什么会发生

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 设置,那么可能是什么问题?

4

1 回答 1

0

好的,我遇到了问题,但我不知道为什么会发生

就像您在代码中已经看到的那样,这是时区问题mktimestrtotime功能是时区/偏移量感知。time()另一方面,功能不受时区偏移的影响。

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

于 2013-09-30T07:56:57.113 回答