JavaScript倒计时获取服务器时间

之前写过一篇:jQuery手机验证码倒计时效果,本文讲另外一种一个阶段的倒计时,这就需要用到服务器时间,毕竟本机时间可以人为的修改。

//获取服务器时间
function getSevertime(){
var xmlHttp = new XMLHttpRequest();
if( !xmlHttp ){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open("HEAD",location.href,false);
xmlHttp.send();
var severtime=new Date(xmlHttp.getResponseHeader("Date"));
return severtime;
}

其他的使用方式跟正常的使用js一致,只是相比平时我们获取的是本机时间会比较准确和不会产生bug.常用获取服务器时间在倒计时应用中,例如以下,倒计时:

//换奖活动兑奖倒计时
var clockTime = null;
var clockRuning = false;
function setClock(){
    // var now = new Date();
    var now = getSevertime();
    var endTime = new Date('2016/01/16 10:00:00');
    var t = endTime.getTime() - now.getTime();
    if(t < 0) clearInterval(clockTime);
      var d=Math.floor(t/1000/60/60/24);
       var h=Math.floor(t/1000/60/60%24);
       var m=Math.floor(t/1000/60%60);
       var s=Math.floor(t/1000%60);
    var _html = '';
    if(d>0) _html += '<span class="muted">'+d+'</span><span class="span">天</span>';
    if(h>=10) _html += '<span class="muted">'+h.toString().slice(0,1)+'</span><span class="muted">'+h.toString().slice(1,2)+'</span><span class="span2">:</span>';
    if(h<10) _html += '<span class="muted">0</span><span class="muted">'+h+'</span><span class="span2">:</span>';
    if(m>=10) _html += '<span class="muted">'+m.toString().substring(0,1)+'</span><span class="muted">'+m.toString().substring(1,2)+'</span>';
    if(m<10) _html += '<span class="muted">0</span><span class="muted">'+m+'</span>';
    if(getId('clockTime')){
        getId('clockTime').innerHTML = _html;
    }
}
setClock();//初始化
var clockTime = setInterval(setClock,60000);

显示效果如下:

daojishi


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流