jquery获取服务器时间

最近一直在做自研项目,遇到一个时间对比,需求是当前时间大于某某时间后才能执行之后的操作,很高兴的用new date获取当前时间戳,再把要对比的时间转成时间戳,然后进行对比,OK问题解决了!那如果你觉得这样做已经没啥问题了,那就太天真了,产品实际运行中,有些客户的客户端时间不准确,或者自己修改过,那么你获取当前时间这一玩法就会被卡bug,所以我们需要获取服务器的时间来进行对比如下:

var now = new Date($.ajax({async: false}).getResponseHeader("Date"));

获取年:
var currentYear = now.getFullYear();
获取月:
var currentMonth = now.getMonth();
获取日:
var currentDay = now.getDate();
获取小时:
var currentHours = now.getHours();
获取分钟:
var currentMinutes = now.getMinutes();
获取秒:
var currentSeconds = now.getSeconds();
获取毫秒:
var currentMilliseconds = now.getMilliseconds();
获取当前日期:
var currentDate = now.toLocaleDateString();
获取当前时间:
var currentTime = now.toLocaleTimeString();
获取日期和时间:
var dateTime = now.toLocaleString();
获取当前星期几:
var currentWeek = now.getDay();
获取完成年份:
var currentFullYear = now.getFullYear();

然后进行封装方法用来进行计算时间差:

//计算时间差
function timeFns(d1) {//d1作为一个变量传进来

//获取服务器时间
var dateBegin = new Date($.ajax({ async: false }).getResponseHeader("Date"));
//如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
//let dateBegin = new Date();//获取当前时间
let dateEnd = new Date(d1.replace(/-/g, "/"));//将-转化为/,使用new Date
let dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数
let dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
let leave1 = dateDiff % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
let hours = Math.floor(leave1 / (3600 * 1000))//计算出小时数
//计算相差分钟数
let leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
let minutes = Math.floor(leave2 / (60 * 1000))//计算相差分钟数
//计算相差秒数
let leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
let seconds = Math.round(leave3 / 1000)
return "距离本场考试开考还有 " + dayDiff + " 天 " + hours + " 小时 " + minutes + " 分钟 " + seconds + " 秒"
}

使用

var time=timeFns('2021-03-12 14:00:00');

console.log(time)

posted @ 2021-03-10 14:33  学无止境pk  阅读(358)  评论(0)    收藏  举报