之前一直在用js时间工具,往往用Date.prototype.format的方式来封装,虽然代码量上会比ts少,但是为什么还用ts封装,自然是为了提高B格呀!最近一段时间迷恋上了ts,之前写了一年的java现在用上这玩意儿真是慢慢的回忆啊,每一次写构造函数、getter和setter方法的时候都会想起最初的java导师为我们讲解这两个的区别,功能,优化,现在感觉真的很感谢当时的松哥!废话说完了就来代码吧。
/**
* 时间类-->创建时间,格式化时间
* @param date
* @param fmt
*/
export class DateUtil {
private date:Date;
private fmt:string
public constructor(date:Date, fmt:string) {
this.date = date ? date : new Date()
this.fmt = fmt ? fmt : 'yyyy-MM-dd hh:mm:ss'
}
public getDate():Date {
return this.date;
}
public setDate(date:Date):void {
this.date = date
}
public getFmt():string {
return this.fmt;
}
public setFmt(fmt:string):void {
this.fmt = fmt
}
public format = ():string => {
let _date = this.getDate()
let fmt = this.getFmt()
let o:any = {
"M+" : _date.getMonth()+1, //月份
"d+" : _date.getDate(), //日
"h+" : _date.getHours(), //小时
"m+" : _date.getMinutes(), //分
"s+" : _date.getSeconds(), //秒
"q+" : Math.floor((_date.getMonth()+3)/3), //季度
"S" : _date.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt)) {
fmt=fmt.replace(RegExp.$1, (_date.getFullYear()+"").substr(4 - RegExp.$1.length));
}
for(let k in o) {
if(new RegExp("("+ k +")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
}
}
return fmt;
}
}
非常简单的一个类,在这种完全支持ES6再加上类型限制,感觉真的完全放飞了自我。
对了,目前是一个喜欢js的csser,感兴趣的可以看下B站视频,对于砖工的我习惯于收集喜欢又实用的css作品。
自己也写了一点点Demo
个人网站(升级中)