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

Mr.*_*ien 9 php datetime

我已经习惯了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
Run Code Online (Sandbox Code Playgroud)

PS我没有在我的PHP文件中设置任何时区,或者我甚至没有修改我的.ini文件(Fresh Installed XAMPP)

更新:时区:欧洲/柏林

Vol*_*erK 8

这很可能是由于您当地的时区.
什么是输出

var_dump(date_default_timezone_get());
Run Code Online (Sandbox Code Playgroud)

在那台机器上?
您还可以检查mktime和gmmktime之间的区别

echo " mktime: ", mktime(), "\n";
echo " gmmktime: ", gmmktime(), "\n";
Run Code Online (Sandbox Code Playgroud)


Jon*_*oni 6

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

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

date_default_timezone_set('UTC');
Run Code Online (Sandbox Code Playgroud)


Ade*_*eel 5

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

date_default_timezone_set('UTC');
Run Code Online (Sandbox Code Playgroud)