通过iPad上的JavaScript同步应用程序中的时间
本文关键字:时间 应用程序 同步 iPad 上的 JavaScript 通过 | 更新日期: 2023-09-27 18:03:55
场景:
我有一个iPad web应用程序,它连接到我的Exchange服务器,可以在Outlook中显示会议室的可见性。
- 时钟必须非常准确(在Exchange Server时间的5秒内(
我的问题是:
- iPad与苹果时间服务器同步时间,如果不破解iPad,就无法改变这一点
- iPad时钟与我们的服务器不同步
我目前的解决方案:
-
我有一个Clock.aspx页面,它返回当前时间并以正确的div显示:
var getTime = function () { $.get('Clock.aspx', function (data) { $('#txt').html('<h1>' + data + '</h1>'); }); }
但是:
- 这是非常低效的,因为每10秒调用一次服务器(这会导致iPad每3/4天崩溃一次(
我想做的事:
- 是每小时从Clock.aspx中提取一次时间,并在剩余时间使用javascript递增,这将大大减少对服务器的调用
请告诉我最好、最有效的方法。
如果你对如何提高效率有任何其他建议,我也很乐意听取。
好吧,这并不完美,但目前满足了我的要求——如果能找到更高效、更准确的解决方案,我将再次表示感谢!
var hour = parseInt("<%=DateTime.Now.Hour %>", 10);
var minute = parseInt("<%=DateTime.Now.Minute %>", 10);
var second = parseInt("<%=DateTime.Now.Second %>", 10);
// var x = hour.tostring() +":"+ minute.tostring() +":"+ second.tostring();
// alert(x);
function showTime() {
second++;
if (second > 59) {
second = 0;
minute++;
}
if (minute > 59) {
minute = 0;
hour++;
}
minute = checkTime(minute);
second = checkTime(second);
var clock = hour.toString() + ":" + minute.toString() + ":" + second.toString();
document.getElementById("txt").innerHTML = "<h1>" + clock + "</h1>";
function checkTime(i) {
return (i < 10 ? '0' : '') + i;
}
}
setInterval('showTime()', 1000);
在使用了我最初的答案几天后,我注意到同步已经结束,这个脚本每小时与服务器同步一次,以相应地重新同步时间,这意味着时钟的准确性与服务器非常接近。以前的脚本每天可能会损失5分钟。我希望这能帮助到别人!
var serverDate;
function getServerDate() {
serverDate = new Date("<%=DateTime.Now %>");
}
function tick() {
serverDate.setSeconds(serverDate.getSeconds() + 1);
var min = serverDate.getMinutes();
var hour = serverDate.getHours();
var sec = serverDate.getSeconds();
if (min == 30) {
$.get('Clock.aspx?type=2', function (data) {
serverDate = new Date(data.split(">")[1].split("<")[0]);
min = serverDate.getMinutes();
hour = serverDate.getHours();
sec = serverDate.getSeconds();
});
}
if (hour < 10) hour = "0" + hour;
if (min < 10) min = "0" + min;
if (sec < 10) sec = "0" + sec;
document.getElementById("txt").innerHTML = "<h1>" + hour + ":" + min + ":" + sec; + "</h1>";
}
window.onload = function () {
getServerDate();
setInterval("tick()", 1000);
}
编辑后添加了clock.aspx是一个输出DateTime.Now.ToString((的页面