热搜:NVER node 开发 php

求解:echo strtotime('2013-01-01 11:11:11')不同机器结果不同

2024-09-06 11:40:01
求解:echo strtotime('2013-01-01 11:11:11')不同机器结果不同

相同的两行代码,

<?phpecho $ts='2013-01-01 11:11:11';echo "
";echo strtotime($ts);?>


在linux服务器上运行,结果是这个:
2013-01-01 11:11:111357009871000

但是在我本机上运行,时间戳却是另外一个,这是怎么回事呢?
服务器上的时区设定为"Asia/Chongqing",在linux下用date输出的时间也是正确的,奇怪了


回复讨论(解决方案)

你应该分别贴出两个机器上的运行结果

重新发一下我的问题
相同的代码

<?phpecho $st=date('2013-01-01 11:11:11');echo "
";echo (strtotime($st) * 1000);echo "
";echo $ts=(strtotime($st) * 1000) - (strtotime('01-01-1970 00:00:00') * 1000);?>


在linux 服务器上运行结果:
2013-01-01 11:11:1113570098710001357035071000


在我自己本机上运行结果却不一样:
2013-01-01 11:11:1113570098710001357038671000


求解啊。。。

重新发一下我的问题
相同的代码

<?phpecho $st=date('2013-01-01 11:11:11');echo "
";echo (strtotime($st) * 1000);echo "
";echo $ts=(strtotime($st) * 1000) - (strtotime('01-01-1970 00:00:00') * 1000);?>


在linux 服务器上运行结果:
2013-01-01 11:11:1113570098710001357035071000


在我自己本机上运行结果却不一样:(winxp+wamp2.1)
2013-01-01 11:11:1113570098710001357038671000

求解。。

两服务器的时区不同?
另外,为啥要乘以1000?这个date,在PHP下是秒数,js是毫秒数。

两服务器的时区不同?
另外,为啥要乘以1000?这个date,在PHP下是秒数,js是毫秒数。

时区都一样的,*1000是为了转成js的时间戳

echo date("Y-m-d H:i:s",1357009871);
echo date("Y-m-d H:i:s",1357038671);

2013-01-01 03:11:11
2013-01-01 11:11:11

差了八个小时,肯定有一个的时区设置有问题。

引用 4 楼 LuciferStar 的回复:两服务器的时区不同?
另外,为啥要乘以1000?这个date,在PHP下是秒数,js是毫秒数。

时区都一样的,*1000是为了转成js的时间戳

3600秒,不难想象

echo date("Y-m-d H:i:s",1357009871);
echo date("Y-m-d H:i:s",1357038671);

2013-01-01 03:11:11
2013-01-01 11:11:11

差了八个小时,肯定有一个的时区设置有问题。

引用 5 楼 r9000_com 的回复:引用 4 楼 LuciferStar ……
这个时区

3600秒,不难想象

是相差了3600秒,但是不知道是什么原因造成的?

echo date("Y-m-d H:i:s",1357009871);
echo date("Y-m-d H:i:s",1357038671);

2013-01-01 03:11:11
2013-01-01 11:11:11

差了八个小时,肯定有一个的时区设置有问题。

引用 5 楼 r9000_com 的回复:引用 4 楼 LuciferStar ……

要比较的应该是这两个,因为是这在两台机器上不同的结果:

1357038671000  

1357035071000

已找到答案,原因是在php.ini中把时区设为Asia/Chongqing与Asia/Shanghai,这样时间会相差一小时,我把php.ini中的时区改为Asia/Shanghai,问题解决,感谢各位回答