2013-04-03 164 views
9

正在使用strtotime让过去1 January 1970秒,但我不明白这是为什么我得到-3600如果时钟设置为12.00AM,我得到0时,时钟设置为1 AM,所以与1 HOUR什么?这是时区问题吗?为什么strtotime(1970年1月1日)在PHP中返回-3600而不是0?

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 

PS我没有设置任何时区在我的PHP文件或我甚至不 修改我的.ini文件(鲜安装XAMPP)

更新:时区:欧洲/柏林

+0

题外话,但ROFL @您的base64编码的电子邮件 – asprin

+1

@asprin题外话评论我想:P)呵呵谢谢反正,我认为这是恭维 –

+1

是的,这是一种恭维,开箱即用的思想和幽默。 – asprin

回答

8

这很可能是由于当地time zone
什么的

var_dump(date_default_timezone_get()); 

该机器上的输出?
您还可以检查mktime和gmmktime

echo " mktime: ", mktime(), "\n"; 
echo " gmmktime: ", gmmktime(), "\n"; 
+0

我确定时区正在搞砸东西....谢谢 –

+0

对于mktime()和gmmktime()... :) +1 –

6

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

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

date_default_timezone_set('UTC'); 
+0

谢谢,我现在正在使用这个来重置UTC的时区 –

4

你需要检查你的时区设置之间的差异。或者如果将default_time_zone设置为UTC,则会得到所需的结果。

date_default_timezone_set('UTC'); 
1

添加此设置时区“欧洲/柏林

date_default_timezone_set('Europe/Berlin'); 
相关问题