js获取本地时间与网络时间

js是客户端执行的,所以,js的一切关于时间的函数,如Date.now()都是以客户端为准的,获取的是客户端的时间,即本地时间。

1、本地时间与网络时间

本地时间:客户端显示的时间(一般是与网络时间一致,但是电脑时间是可调整的,故可能不准确)

js中的Date方法获取的时间就是客户端的时间

网络时间:互联网时间。

当我们有倒计时的需求时,不可能以客户端的时间为准,如果客户端时间不予网络时间一致,整个项目就完蛋了,所以我们需要获取服务端时间

2、网络时间获取方法

我们获取服务器时间是发起ajax请求,然后获取请求头即header为准的,方法如下:

2.1 原生js方法

日期格式化根据代码

function dateTimeFormate(date){
  if(!date){
    return
  }else{
    var d = new Date(date);
    var year = d.getFullYear();
    var month = ('0' + (d.getMonth() + 1)).slice(-2);
    var day = ('0' + (d.getDate())).slice(-2);
    var hour = ('0' + (d.getHours())).slice(-2);
    var minutes = ('0' + (d.getMinutes())).slice(-2);
    var seconds = ('0' + (d.getSeconds())).slice(-2);
    return year + "-" + month + "-" + day + " " + hour + ":" + minutes + ":" + seconds;
  }
}

js发送请求

var xhr = new XMLHttpRequest();
if( !xhr ){
   xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open("HEAD",location.href,true);
xhr.onreadystatechange=function(){
    if( xhr.readyState == 4 && xhr.status == 200 ){
         alert(dateTimeFormate(xhr.getResponseHeader("Date")));
    }
}
xhr.send(null);
2.2 使用jquery获取网络时间

调用方法

dateTimeFormate($.ajax({async:false}).getResponseHeader("Date"))

格式化时间方法

function dateTimeFormate(date){
  if(!date){
    return
  }else{
    var d = new Date(date);
    var year = d.getFullYear();
    var month = ('0' + (d.getMonth() + 1)).slice(-2);
    var day = ('0' + (d.getDate())).slice(-2);
    var hour = ('0' + (d.getHours())).slice(-2);
    var minutes = ('0' + (d.getMinutes())).slice(-2);
    var seconds = ('0' + (d.getSeconds())).slice(-2);
    return year + "-" + month + "-" + day + " " + hour + ":" + minutes + ":" + seconds;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值