通过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递增,这将大大减少对服务器的调用

请告诉我最好、最有效的方法。

如果你对如何提高效率有任何其他建议,我也很乐意听取。

通过iPad上的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((的页面