安装moment插件
# npm install moment
使用moment插件
import moment from 'moment'
今天
let startToday = moment(moment().startOf("day").valueOf()).format("YYYY-MM-DD");
let endToday = moment(moment().valueOf()).format("YYYY-MM-DD");
sTime = startToday + 'T00:00:00.000Z';
eTime = endToday + 'T23:59:59.999Z';
本周
let startWeek = '';
let endWeek = '';
// 得出今天星期几
let num = new Date().getUTCDay();
// 判断是星期几,计算开始和结束日期
if (num === 0) {
startWeek = moment(new Date().getTime() + (6 * 24 * 60 * 60 * 1000)).format("YYYY-MM-DD");
endWeek = moment(new Date(new Date().getTime() + (24 * 60 * 60 * 1000))).format("YYYY-MM-DD");
sTime = startWeek + 'T00:00:00.000Z';
eTime = endWeek + 'T23:59:59.999Z';
} else {
startWeek = moment(new Date().getTime()+((1-num)*24*60*60*1000)).format("YYYY-MM-DD");
endWeek = moment(new Date(new Date().getTime()+((7-num)*24*60*60*1000))).format("YYYY-MM-DD");
sTime = startWeek + 'T00:00:00.000Z';
eTime = endWeek + 'T23:59:59.999Z';
}
本月
let startMonth = moment(moment().month(moment().month()).startOf('month').valueOf()).format('YYYY-MM-DD');
let endMonth = moment(moment().month(moment().month()).endOf('month').valueOf()).format('YYYY-MM-DD');
sTime = startMonth + 'T00:00:00.000Z';
eTime = endMonth + 'T23:59:59.999Z';
上月
let startUpMonth = moment(moment().month(moment().month() - 1).startOf('month').valueOf()).format('YYYY-MM-DD');
let endUpMonth = moment(moment().month(moment().month() - 1).endOf('month').valueOf()).format('YYYY-MM-DD');
sTime = startUpMonth + 'T00:00:00.000Z';
eTime = endUpMonth + 'T23:59:59.999Z';
问题:
1.网上大部分给出的本周的方案都有问题,正好周日上班测试的时候才发现,先看网上给出本周的示例:
obj.starttime = moment(moment().week(moment().week()).startOf('week').add(1, 'days').valueOf()).format('YYYY-MM-DD HH:mm:ss') ;
obj.endtime = moment(moment().week(moment().week()).endOf('week').add(1, 'days').valueOf()).format('YYYY-MM-DD HH:mm:ss');
上面的这个开始到结束的时间在周一到周六测试都不会有问题,唯独你周日去测试的时候你会发现,例如今天是周日也就是28号,本周为6月22–6月28,你使用上面的实例得出的却是6月29–7月5号,这个bug还真是隐藏的比较深的。
2.猜测bug出现的原因
// 得出今天星期几
let num = new Date().getUTCDay();
startWeek = moment(new Date().getTime()+((1-num)*24*60*60*1000)).format("YYYY-MM-DD");
endWeek = moment(new Date(new Date().getTime()+((7-num)*24*60*60*1000))).format("YYYY-MM-DD");
num的值可能为(0,1,2,3,4,5,6)1为周一,0为周日,大家看上面的这个示例num为1~6的时候得出的开始和结束时间不会有问题,但是一旦num为0的时候,也就是周日,得出的开始和结束的时间变为了下周。
以上就是快捷时间的内容,如果你有更好的方法,欢迎探讨!!!