我正在开发一个事件网站。我从MySQL数据库中获取UTC时间,并使用PHP将其输出到页面上,然后使用JavaScript将其转换为用户的时区。但是,不知何故,JavaScript给我提供了比我从MySQL获得的时间早两个小时的时间。我和我的服务器都在山区标准时区,因此JavaScript应该将日期向后推6个小时,但实际上日期向后推了8个小时。即使考虑夏令时,也只有一小时的差异,而不是两小时。
以下是将PHP时间戳转换为日期对象并以YYYY-mm-dd HH:ii:ss格式输出的JavaScript代码(使用jQuery):
这里是文档正文的PHP代码:
它的输出结果如下:
以下是将PHP时间戳转换为日期对象并以YYYY-mm-dd HH:ii:ss格式输出的JavaScript代码(使用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日期时间对象:2012-04-07 23:00:00
- PHP Unix时间戳:1333832400
- PHP日期字符串:2012-04-07 23:00:00
- 减去6个小时的PHP日期(我们的时区偏移值):2012-04-07 17:00:00
- Javascript日期:2012-04-07 15:00:00
我已阅读了所有文档,但没有找到答案。为什么在MST中Javascript日期比PHP日期早两个小时?