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