日期:2014-05-17  浏览次数:20744 次

这个动态获取服务器时间为什么和正常时间差8个小时
问题如上所述,已仔细看过代码,新手求指教!代码如下


 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <script type="text/javascript" language="javascript">
 <!--
window.onload=function (){
 stime();
 }
 var c=0;
 var Y=<?php echo date('Y')?>,M=<?php echo date('n')?>,D=<?php echo date('j')?>;
 function stime() {
 c++
 sec=<?php echo time()-strtotime(date("Y-m-d"))?>+c;
 H=Math.floor(sec/3600)%24
 I=Math.floor(sec/60)%60
 S=sec%60
 if(S<10) S='0'+S;
 if(I<10) I='0'+I;
 if(H<10) H='0'+H;
 if (H=='00' & I=='00' & S=='00') D=D+1; //日进位
if (M==2) { //判断是否为二月份******
if (Y%4==0 && !Y%100==0 || Y%400==0) { //是闰年(二月有28天)
if (D==30){M+=1;D=1;} //月份进位
}
else { //非闰年(二月有29天)
if (D==29){M+=1;D=1;} //月份进位
}
 }
else { //不是二月份的月份******
if (M==4 || M==6 || M==9 || M==11) { //小月(30天)
if (D==31) {M+=1;D=1;} //月份进位
}
else { //大月(31天)
if (D==32){M+=1;D=1;} //月份进位
}
 }
if (M==13) {Y+=1;M=1;} //年份进位
//setInterval(stime,1000);
 setTimeout("stime()", 1000);
 document.getElementById("servertime").innerHTML = Y+'-'+M+'-'+D+' '+H+':'+I+':'+S
 }
-->
 </script>
 </head>
 <body>
 <!--动态读取服务器时间开始 -->
 <span id="servertime"></span>
 <!--动态度曲服务器时间结素 -->
 </body>
 </html>

------解决方案--------------------
如果你确认代码没问题 刚好差了8个小时,那么 服务器php.ini 添加 date.timezone = "Asia/Chongqing"

restart apache.
------解决方案--------------------
默认的格林时间比正常时间早8小时。 改改时区设置即可。
------解决方案--------------------
php.ini 添加 date.timezone = "Asia/Chongqing"
------解决方案--------------------
在程序最前边加上一句话:date_default_timezone_set('PRC');