利用moment计算年、月、周及季的开始时间和结束时间
记录一下开发过程中遇到的关于获取某个维度的开始时间和结束时间的问题。
开发过程中如果遇到此问题小伙伴们一般是如何解决的呢?
最省事的方法就是直接让后端的同学把这些都算好直接返回给前端用就好了,但万一后端同学没空或者心情不好呢?哈哈哈,今天我们自己动手,丰衣足食。
需求:
获取本年、本季、本月、本周、上周的开始日期和结束日期。
利用moment计算代码如下:
import moment from 'moment';
moment.locale('zh-cn'); // 注意,这个设置是为了让moment的一周起始时间是从周一开始,默认是从周日开始的
const dateMap = {};
dateMap.year = [];
dateMap.quarter = [];
dateMap.month = [];
dateMap.week = [];
dateMap.lastWeek = [];
dateMap.year.push(moment().startOf('year').format('YYYY-MM-DD')); // 本年的起始时间
dateMap.year.push(moment().endOf('year').format('YYYY-MM-DD')); //本年的结束日期
dateMap.quarter.push(moment().startOf('quarter').format('YYYY-MM-DD')); // 本季的起始时间
dateMap.quarter.push(moment().endOf('quarter').format('YYYY-MM-DD')); // 本季的结束时间
dateMap.month.push(moment().startOf('month').format('YYYY-MM-DD')); //本月的开始时间
dateMap.month.push(moment().endOf('month').format('YYYY-MM-DD')); //本月的结束时间
dateMap.week.push(moment().startOf('week').format('YYYY-MM-DD'));//本周的开始日期
dateMap.week.push(moment().endOf('week').format('YYYY-MM-DD'));//本周的结束日期
dateMap.lastWeek.push(moment().add(-1, 'W').startOf('week').format('YYYY-MM-DD'));//上周的开始时间
dateMap.lastWeek.push(moment().add(-1, 'W').endOf('week').format('YYYY-MM-DD'));//上周的结束日期
至此,我们已经完成了上面的需求。