首页 文章

Javascript日期对象未正确调整时区偏移

提问于
浏览
4

我正在一个活动网站上工作 . 我从我的localhost上的MySQL数据库获得UTC时间并使用PHP将它们回显到页面,然后使用Javascript将它们转换为用户的时区 . 出于某种原因,Javascript给了我一段时间,比我从MySQL获得的时间落后两个小时 . 我自己和我的服务器都在Mountain Standard Timezone中,因此Javascript应该将日期推回六个小时,而日期则会延迟八个小时 . 即使夏令时也仅占一小时的差异,而不是两个 .

这是用于将PHP时间戳转换为日期对象并以YYYY-mm-dd HH输出的Javascript:ii:ss格式(使用jQuery):

function leadingzeros(string){
    if (string.toString().length == 1){
        string = "0" + string;
    }
    return string;
}

$(document).ready(function(){
    var thisdate = new Date(<?php echo (strtotime($row['start'])*1000);?>);
    $("#jsdate").html(
        thisdate.getFullYear()+"-"+leadingzeros((thisdate.getMonth()+1))+"-"+ leadingzeros(thisdate.getDate())+" "+
        leadingzeros(thisdate.getHours())+":"+leadingzeros(thisdate.getMinutes())+":"+leadingzeros(thisdate.getSeconds())
    );
});

这是文档正文的PHP:

<?php
$row = mysqli_fetch_assoc($result);
echo "<ul><li>MySQL datetime object: ".$row['start']."</li>".
"<li>PHP Unix timestamp: ".strtotime($row['start'])."</li>".
"<li>PHP date string: ".date("Y-m-d H:i:s",strtotime($row['start']))."</li>".
"<li>PHP date minus 6 hours (which is our timezone offset): ".date("Y-m-d H:i:s",strtotime($row['start']) - (6*3600))."</li>".
"<li>Javascript date: <span id='jsdate'></span></li></ul>";
?>

它输出:

  • MySQL datetime对象:2012-04-07 23:00:00

  • PHP Unix时间戳:1333832400

  • PHP日期字符串:2012-04-07 23:00:00

  • PHP日期减去6小时(这是我们的时区偏移):2012-04-07 17:00:00

  • Javascript日期:2012-04-07 15:00:00

我读过的文档都没有给出答案 . 为什么JST日期落后于MST的PHP日期两小时?

2 回答

  • 0

    发生这种情况的原因是因为 strtotime() 在分析给定日期/时间时默认使用 date.timezone 设置,因此结果会得到相应的补偿 .

    要解决此问题,您可以将 date.timezone 设置为 Etc/UTC 或"anchor"来自数据库的时间戳,如下所示:

    strtotime("{$row['start']} GMT")
    
  • 0

    我只是使用此代码在js中提醒日期 .

    var thisdate = new Date(<?php echo (strtotime('2012-04-07 23:00:00')*1000);?>);
        alert(thisdate);
        alert(<?php echo (strtotime('2012-04-07 23:00:00')*1000);?>);
    

    我得到的是
    enter image description here

    所以你得到时间关于gmt .in php和mysql服务器必须配置时区 . 所以你不必担心 .

相关问题