源码
<script type="text/JAVAscript" charset="utf-8">
class DateTransform{
/* dayNum: 天数; startDate: 开始日期 */
constructor (dayNum,startDate) {
//将天数转换为数字型
this.dayNum = Number(dayNum);
//获取开始日期,若未传值,则默认以当前时间
this.startDate = startDate || this.StampToStr();
}
/* 计算日期 */
format (type) {
const dateType = type || 'YYYY-MM-DD hh:mm:ss';//格式化日期
const start = this.StrToStamp(this.startDate);//开始日期转时间戳
const num = this.dayNum*24*60*60*1000;//天数转毫秒数
const end = this.StampToStr(start + num);
let time = '';
for(let i in dateType){
const reg = /^[a-z]{1}$/i;
if(reg.test(dateType[i])){
//字母
time += end[i];
}else{
//非字母
time += dateType[i];
};
};
return time;
}
/* 时间戳转字符串 */
StampToStr (stamp) {
//若未传参,则默认以当前时间
const dateTime = stamp ? new Date(stamp) : new Date();
//年
const year = dateTime.getFullYear();
//月
const month = dateTime.getMonth() + 1 < 10 ? "0" + (dateTime.getMonth() + 1) : dateTime.getMonth() + 1;//0-11
//日
const date = dateTime.getDate() < 10 ? "0" + dateTime.getDate() : dateTime.getDate();
//时
const hour = dateTime.getHours() < 10 ? "0" + dateTime.getHours() : dateTime.getHours();//0-23
//分
const minute = dateTime.getMinutes() < 10 ? "0" + dateTime.getMinutes() : dateTime.getMinutes();//0-59
//秒
const second = dateTime.getSeconds() < 10 ? "0" + dateTime.getSeconds() : dateTime.getSeconds();//0-59
return `${year}-${month}-${date} ${hour}:${minute}:${second}`;
}
/* 字符串转时间戳 */
StrToStamp (str) {
//若未传参,则默认以当前时间
return str ? new Date(str).getTime() : new Date().getTime();
}
};
var time = new DateTransform(-7).format();
console.log(time);
</script>