仪表板中的时钟随着系统时间的改变而改变
Clock in dashboard changes as the system time is changed
我的要求是,当我改变系统的客户端时间时,显示器中的时钟不应该改变。我有jboss服务器..有仪表板应该显示服务器时间..我已经做了一些编码,但当我改变我的系统定时时钟也改变在仪表板..这里是我的代码..
从类我得到服务器时间
public Date getServerDateTime() throws Exception {
Date serverDateTime = null;
try {
serverDateTime = new java.util.Date();
System.out.println("ServerDateTime-->" +serverDateTime);
}catch(Exception e ){
e.printStackTrace();
}
return serverDateTime;
}
在javscript var month = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var weekday = new Array("Sun","Mon","Tue","Wed","Thu","Fri");
//Time Display format -Mon May 16 16:48:04 2011
//Users time
var timeLocal;
//Servers time
var timeServer;
//mill diff between local time and server time
var millDiff;
//The clock to tick function
function toTick(){
timeLocal = new Date();
//add time difference
timeLocal.setMilliseconds(timeLocal.getMilliseconds() - millDiff);
//display the value
document.getElementById("dateAndTime").innerHTML = month[timeLocal.getMonth()]+" "+(timeLocal.getDate() < 10 ? '0'+timeLocal.getDate() : timeLocal.getDate())+", "+timeLocal.getFullYear()+" "+(timeLocal.getHours() < 10 ? '0'+timeLocal.getHours() : timeLocal.getHours())+":"+(timeLocal.getMinutes() < 10 ? '0'+timeLocal.getMinutes() : timeLocal.getMinutes())+":"+(timeLocal.getSeconds() < 10 ? '0'+timeLocal.getSeconds() : timeLocal.getSeconds());
}
/** Display Server date and time in header section ends **/
/**
* This function will send a remote call to the server and display the date and time in the
* gui at the header area
*/
function getServerDateTime(){
CommonRemoteCall.getServerDateTime({
callback:function(datetime) {
document.getElementById("dateAndTime").innerHTML = month[datetime.getMonth()]+" "+(datetime.getDate() < 10 ? '0'+datetime.getDate() : datetime.getDate())+", "+datetime.getFullYear()+" "+(datetime.getHours() < 10 ? '0'+datetime.getHours() : datetime.getHours())+":"+(datetime.getMinutes() < 10 ? '0'+datetime.getMinutes() : datetime.getMinutes())+":"+(datetime.getSeconds() < 10 ? '0'+datetime.getSeconds() : datetime.getSeconds());
//Server time
timeServer = datetime;
//Users time
timeLocal = new Date();
//Calculate the difference (returns milliseconds)
millDiff = timeLocal - timeServer;
}
});
}
我哪里做错了,有没有更好的方法?如何防止仪表板使用终端时钟而只使用服务器时钟
如果您基于客户端时钟,则由于参考点更改,当用户更改时钟时,它将中断。
如何检测用户更改它?
更新显示时,请记录以前的时间。如果之前的时间有明显差异,可以通过millDiff
.
注意:时间是永远不会将是准确的,因为它需要的时间为请求在网络上旅行和它需要的时间页面呈现在客户端。
只要你使用任何类似
的代码new Date(); //or
Date.now(); //if you like milliseconds
需要某种方式来更新服务器和客户机之间的时差。一个解决方案是使用窗口。setInterval设置为1000ms的延迟,并查看客户端时间是否发生了明显不同于1000ms的变化。如果存在,则需要与服务器重新同步。
。
var lastTimeLocal = null;
var interval = 1000;
var fudge = 0.05;
window.setInterval(function() {
var thisTime = Date.now();
if(lastTimeLocal == null)
return;
var delta = thisTime - lastTimeLocal;
lastTimeLocal = thisTime;
if(delta < interval * (1.0 - fudge) || delta > interval * (1.0 + fudge))
getServerDateTime();
}, interval);
最好将它折叠到您的toTick
函数中,但您不需要这样做。
相关文章:
- 为什么日期对象的时间没有改变?我怎样才能改变它
- 神奇地改变时间戳
- 网页动画 API - 改变动画持续时间
- Javascript时钟,改变时间
- CSS3关键帧-改变动画持续时间导致“;跳跃”;
- 当一天的开始和结束时间改变时,删除/添加正确的
's - 改变时间滑块到30分钟插槽而不是1小时
- JS滑块不能改变图像的动画时间
- 根据一天中的时间来改变颜色
- 使用moment.js添加时间时,日期不会改变
- 帮助Javascript改变时间速度
- 改变背景颜色不透明度与时间间隔
- 航次绘图改变滴答标记时间标签
- Javascript -根据一天中的时间改变渐变颜色的主体
- 改变动画持续时间CSS3不工作在Chrome
- 我如何改变我的Javascript数字时钟从军事时间到标准时间
- DHTMLX日历选择时间不改变输入字段
- jQuery json缓存,是否有办法改变时间戳url键
- 如何使用momentjs改变时间格式
- 如何改变时间圆的高度和宽度