相信每个前端人员都会遇到 js的奇葩Date函数确实感觉不好用所以自己写了一个 希望对大家有点帮助
主要逻辑是传入指定格式的字符串(如果不传就默认当前时间),然后传入你需要的指定格式,来获取你需要的字符串,听起来好繁琐 上代码
注 makeDate()返回的日期格式对象还包含了一些日期参数,如果有更多需要的小伙伴还可以自行更改需要的格式哦
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>日期插件测试</title>
</head>
<body onload="load()">
<script type="text/javascript">
function load(){
console.log(makeDate().format());
//2017-8-25 15:9:13
console.log(makeDate().format(["年","月","日 ","时","分","秒","毫秒"]));
//2017年8月25日 15时9分13秒985毫秒
console.log(makeDate().format(["年","月","日"]));
//2017年8月25日
console.log(makeDate().format([null,null,null,"时","分","秒","毫秒"]));
console.log(makeDate().format([,,,"时","分","秒"]));
//15时9分13秒
console.log(makeDate().format(["-","-"," ",":"," "]));
//2017-8-25 15:9
console.log(makeDate("2017-08-25 08:6:08").format());
//2017-8-25 8:6:8
console.log(makeDate("2017-08-25 23:6:08").format());
//2017-8-25 23:6:8
};
/**获取当前时间的字符串*/
function makeDate(dateStr){
//dateStr需要遵循 2017-08-25 08:08:08
var d=new Date();
if(dateStr){
var dateStrArr=dateStr.split(/[-|:| ]/);
d.setFullYear(dateStrArr[0],dateStrArr[1]*1-1,dateStrArr[2]);
d.setHours(dateStrArr[3],dateStrArr[4],dateStrArr[5])
}
var dateObj={};
dateObj.yyyy=d.getFullYear();
dateObj.MM=d.getMonth()+1;
dateObj.dd=d.getDate();
dateObj.HH=d.getHours();
dateObj.mm=d.getMinutes();
dateObj.ss=d.getSeconds();
dateObj.ms=d.getMilliseconds();
dateObj.time=d.getTime();
dateObj.date=d;
/**根据间隔字符串来获取对应的日期格式
例如:splitArr=["年","月","日 ","时","分","秒","毫秒"]
或["年","月","日"]或[null,null,null,"时","分","秒","毫秒"]或["-","-"," ",":"," "]
*/
dateObj.format=function(splitArr){
var dateArr=[this.yyyy,this.MM,this.dd,this.HH,this.mm,this.ss,this.ms]
var dateStr;
for(var i in splitArr){
if(splitArr[i]&&dateArr[i]){
if(!dateStr){dateStr="";};
dateStr+=dateArr[i]+splitArr[i];
}
}
if(dateStr){
return dateStr.trim();
}else{
return this.yyyy+"-"+this.MM+"-"+this.dd+" "+this.HH+":"+this.mm+":"+this.ss;
}
}
return dateObj;
}
</script>
</body>
</html>