用于显示服务器不工作时的javascript时间的脚本

用于显示服务器不工作时的javascript时间的脚本,javascript,time,Javascript,Time,我试图在我的页面上显示一个实时javascript时钟,它显示服务器上的时间。几周前,我在互联网上发现了这段代码,但它似乎并没有达到它声称的效果。它显示的是客户端时间,而不是服务器时间。知道为什么吗 flag = true; timer = ''; setInterval(function(){phpJavascriptClock(<?php echo time(); ?>);},1000); function phpJavascriptClock(timestamp) {

我试图在我的页面上显示一个实时javascript时钟,它显示服务器上的时间。几周前,我在互联网上发现了这段代码,但它似乎并没有达到它声称的效果。它显示的是客户端时间,而不是服务器时间。知道为什么吗

flag = true;
timer = '';
setInterval(function(){phpJavascriptClock(<?php echo time(); ?>);},1000);


function phpJavascriptClock(timestamp)
{                 
  if ( flag ) {            
    timer = timestamp *  1000;
  }                     
  var d = new Date(timer);
  var currentDate = d.getDate();
  currentDate = currentDate < 10 ? '0'+currentDate : currentDate;

  var hours = d.getHours();    
  var minutes = d.getMinutes();
  var seconds = d.getSeconds();

  var ampm = hours >= 12 ? 'PM' : 'AM';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour ’0' should be ’12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  seconds = seconds < 10 ? '0'+seconds : seconds;
  var strTime = hours + ':' + minutes + ' ' + ampm;

  var output = '';
  output += 
    '<a>'
    + '<i class="ace-icon fa fa-clock-o"></i>'
    + '<span class="">' + strTime + ' (SA)</span>'
    + '</a>'
  ;

  document.getElementById("current_time").innerHTML = output ;
  flag = false;
  timer = timer + 1000;
}
flag=true;
计时器='';
setInterval(函数(){phpJavascriptClock();},1000);
函数phpJavascriptClock(时间戳)
{                 
如果(标志){
定时器=时间戳*1000;
}                     
var d=新日期(计时器);
var currentDate=d.getDate();
currentDate=currentDate<10?'0'+currentDate:currentDate;
var hours=d.getHours();
var minutes=d.getMinutes();
var seconds=d.getSeconds();
var ampm=小时数>=12?“下午”:“上午”;
小时数=小时数%12;
小时数=小时数?小时数:12;//小时数“0”应为“12”
分钟=分钟<10?'0'+分钟:分钟;
秒=秒<10?'0'+秒:秒;
var strTime=hours+':'+minutes+''+ampm;
var输出=“”;
输出+=
''
+ ''
+''+strTime+'(SA)'
+ ''
;
document.getElementById(“当前时间”).innerHTML=输出;
flag=false;
定时器=定时器+1000;
}

我看到Javascript日期的这4个构造函数:

new Date()
new Date(milliseconds)
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds) 

可能是因为时间戳不是
毫秒
日期字符串
,所以Javascript只创建了一个新的
日期()
对象,没有任何参数(即客户端时间)?

编写了一个新的基于jQuery的时钟。尽管它每分钟都会轮询服务器,但它仍然可以工作

我的时间控制器:

  public function getServerTimeAction() {
    global $config;
    try{
      $return["time"] = date("H:i a");
      $return["timezone"] = $config->application->timezone;

      $this->returnJson( JsonReturnObject::success( $return ) ) ;
    } catch ( Exception $e ) {
      $this->returnJson( JsonReturnObject::error( $e ) ); 
    }    
  }
jquery代码:

function getServerTime() {
  $.ajax({
    url : "{{ url('json/session/get-server-time') }}",
    cache : false,
    success : function ( data ) {
      if ( data.success ) {                             
        var output = '';
        output += 
          '<a>'
          + '<i class="ace-icon fa fa-clock-o"></i>'
          + '<span class="">' + data.data.time + ' (SA)</span>'
          + '</a>'
        ;
        $("#current_time").html(output);
        setTimeout(getServerTime, 60000);                         
      }                
    }
  })
}
函数getServerTime(){ $.ajax({ url:“{url('json/session/get server time')}}”, cache:false, 成功:功能(数据){ if(data.success){ var输出=“”; 输出+= '' + '' +''+data.data.time+'(SA)' + '' ; $(“#当前#时间”).html(输出); setTimeout(getServerTime,60000); } } }) }
如您所述,这是查看浏览器(用户机器)的时间。它不进行AJAX调用或其他连接到服务器的操作。您能验证是否将时间戳打印到javascript函数中吗?@asgs服务器时间插入到第3行的函数中,应该可以正常工作,因为..@asgs。。服务器的时间戳已经传递,我可以确认这个时间戳是正确的,所以js端的一些东西是不正确的。对不起,我没有看函数
phpJavascriptClock()
上面的那些行。当然这是一个很好的观点,但是我相信它是以毫秒(timer*1000)的形式传递的