vue今天 本周 本月 上月

安装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的时候,也就是周日,得出的开始和结束的时间变为了下周。


以上就是快捷时间的内容,如果你有更好的方法,欢迎探讨!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值