1.在写一个课表软件的时候,需要在表头处显示这周一至周五的日期,以下是JS代码:
let time = {}
//根据当前时间计算本周一至五的日期对象
time.getFiveDays = function() {
let currentDate = new Date();
let timesStamp = currentDate.getTime();
let currenDay = currentDate.getDay();
let dates = [];
for(let i = 0; i < 5; i++) {
let tempDate = new Date(timesStamp + 24 * 60 * 60 * 1000 * (i - (currenDay + 6) % 7));
dates.push(tempDate);
}
return dates;
}
2.传入一个日期(YYYY-MM-DD),计算与今天之间相差的天数.(可修改成任意两天之间的天数)
//两个时间相差天数 sDate1 2006-12-18格式
time.datedifference = function(sDate1) {
let dateSpan,
tempDate,
iDays, sDate2;
sDate1 = Date.parse(sDate1);
sDate2 = new Date();
dateSpan = sDate2 - sDate1;//相差毫秒数
dateSpan = Math.abs(dateSpan);//取绝对值
iDays = Math.ceil(dateSpan / (24 * 3600 * 1000));//转化为天数
// console.log(iDays + "天数");
return iDays
};
3.将一个将"yyyy-mm-dd HH:MM:ss"格式的时间 转化为 几小时前,几天前。(改编于mui)
首先将符合格式的字符串转化为Date对象
let a = str.split(/[^0-9]/); //以非数字为分割点,分割为数组
let date = new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]); //传入 年 月 日 时 分 秒等参数,构造Date对象
然后定义一个对象保存年,月,日等的毫秒数
let UNITS = {
'年': 31557600000,
'月': 2629800000,
'天': 86400000,
'小时': 3600000,
'分钟': 60000,
'秒': 1000
};
用格式化的时间与当前时间相减,用结果与对象的元素进行比较,输出XX前。
for (let unit in UNITS) {
if (diff >= UNITS[unit]) {
resultStr = Math.floor(diff / UNITS[unit]) + unit + '前';
break;
}
}
return resultStr || '刚刚';
完整代码如图: