今天遇到一个需求,8~24点才能进行某一审核操作,于是就想在前端做一个当前网络时间的校验功能,代码如下:
/**
* 判断当前网络时间是否在 8~24点时间段
*/
function checkAuditTime(){
var nowDate=getServerTime();
var beginDate=new Date(nowDate);
var endDate=new Date(nowDate);
beginDate.setHours(8, 0, 0, 0);
endDate.setHours(24, 0, 0, 0);
if(nowDate.getTime()-beginDate.getTime()>=0 && nowDate.getTime() <= endDate.getTime()){
return true;
}else{
return false;
}
}
/**
* 发送请求到服务器,从响应头里的时间戳,获取当前网络时间
* @returns {Date}
*/
function getServerTime(){
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
xmlHttp.open("GET", window.location.href.toString(), false);
xmlHttp.setRequestHeader("If-None-Match", "bytes=-1");
xmlHttp.setRequestHeader("Cache-Control","no-cache");
xmlHttp.send(null); //发送get请求
return new Date(xmlHttp.getResponseHeader("Date"));//从响应头中获取当前网络时间
}
beginDate.setHours(8, 0, 0, 0);//设置当前日期8点整
endDate.setHours(24, 0, 0, 0);//设置当前日期24点整
这两个代码是精髓,太nice了!!
另外介绍下js的Date类的常用方法:
var myDate = new Date();
myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-????)
myDate.getMonth(); //获取当前月份(0-11,0代表1月)
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间