为什么strtotime(1970年1月1日)在PHP中返回-3600而不是0


Why strtotime(1st January 1970) returns -3600 instead of 0 in PHP?

我使用strtotime获得秒过去1 January 1970,但我不理解为什么我得到-3600如果时钟设置为12.00AM,我得到0当时钟设置为1 AM,那么1 HOUR是什么?是时区的问题吗?

echo 'I Expect 0 Here '.strtotime('1st January 1970').'<br />';
//This gives me -3600
echo 'I Expect 3600 Here '.strtotime('1st January 1970 01.00AM'); 
//This gives me 0

p。我没有在PHP文件中设置任何时区,甚至没有修改了我的。ini文件(新安装的XAMPP)

更新:时区:Europe/Berlin

很可能是因为你所在的时区。

的输出是什么?
var_dump(date_default_timezone_get());

在那台机器上?
您还可以检查mktime和gmmktime

之间的差异
echo " mktime: ", mktime(), "'n";
echo " gmmktime: ", gmmktime(), "'n";

您的时区必须设置为UTC+1。您所在时区的午夜发生在UTC午夜前一小时,这解释了-3600秒的偏移量。

您可以将时区设置为UTC以获得预期的结果:

date_default_timezone_set('UTC');

您需要检查您的时区设置。或者如果你设置default_time_zone为UTC,你会得到想要的结果。

date_default_timezone_set('UTC');

将此添加到设置时区'Europe/Berlin'

 date_default_timezone_set('Europe/Berlin');