time()给出错误的时间戳

时间:2017-05-19 18:25:13

标签: php date time

我在虚拟机中安装了ubuntu,安装了appache并使用iframe在web上工作,但不知何故我的时间戳错了。

首先,ubuntu和主机操作系统同时在同一时区,但后来我将主机的时区更改为不到1小时的不同区域

所以现在在virtualbox ubuntu示例19:00(webhost)和主机18:00(父os),但如果我使用time()并转换为日期我得到18:00什么不是服务器端。 ...

这总是0 echo“STimeDiff = parseInt('”。time()。“',10)-parseInt((Date.now()/ 1000 | 0));

如果我将time()转换为date => 2017-05-19 20:24 如果我使用日期(“Y-m-d H:i:s”)=> 2017-05-19 21:24

为什么会出现这种差异,如何解决?

1 个答案:

答案 0 :(得分:1)

查看http://php.net/time

的热门评论
  

文档应该包含此信息。函数time()始终返回与时区无关的时间戳(= UTC)。

<?php
date_default_timezone_set("UTC"); 
echo "UTC:".time(); 
echo "<br>"; 

date_default_timezone_set("Europe/Helsinki"); 
echo "Europe/Helsinki:".time(); 
echo "<br>"; 
?>

输出(注意两者都相同):

UTC:1495738754<br> Europe/Helsinki:1495738754<br>

  

作为字符串的本地时间可以通过mktime()获取strftime()和本地时间戳(如果需要)。“

我发现您只想向用户显示您的服务器日期/时间&#39;客户,要做到这一点,只需使用date而不是时间。

<?php
date_default_timezone_set("UTC"); 
echo "UTC:".date('Y-m-d H:i:s'); 
echo "<br>\n";

date_default_timezone_set("Europe/Helsinki"); 
echo "Europe/Helsinki:".date('Y-m-d H:i:s'); 
echo "<br>\n"; 
?>

输出:

UTC:2017-05-25 18:55:02<br> Europe/Helsinki:2017-05-25 21:55:02<br>