某些场景中,我们需要快速筛选以天、周、月、季度、年为条件的数据,并且需要传给后端要求的时间格式。
对此,我们可以手写方法 使用new Date()封装方法获取需要的某些时间格式xxxx-xx-xx 达到目的,除此之外还有一个快捷的方法,即moment。
在前端许多组件库中,时间选择框大多数也是采用moment来获取时间,因此了解moment的一些基础方法也是非常必要的。
模拟数据为,当前时间:2021.01.20(周三),本周一:2021.01.18,本周日:2021.01.24
以“天”为单位的时间获取
- 今天
moment().startOf('days').format('YYYY-MM-DD HH:mm:ss'); // 开始时间 2021-01-20 00:00:00
moment().endOf('days').format('YYYY-MM-DD HH:mm:ss'); // 结束时间 2021-01-20 23:59:59
- 昨天
moment().startOf('days').subtract(1,'days').format('YYYY-MM-DD HH:mm:ss'); // 开始时间 2021-01-19 00:00:00
moment().endOf('days').subtract(1,'days').format('YYYY-MM-DD HH:mm:ss'); // 结束时间 2021-01-19 23:59:59
以“周”为单位的时间获取
- 本周
moment() .startOf('weeks').format('YYYY-MM-DD'); // 本周开始日期 2021-01-18
moment().endOf('weeks').format('YYYY-MM-DD'); // 本周结束日期 2021-01-24
- 上周
moment().startOf('weeks').subtract(1, 'weeks').format('YYYY-MM-DD'); // 上周开始日期
moment().endOf('weeks').subtract(1, 'weeks').format('YYYY-MM-DD'); // 上周结束日期
- 具体星期x
moment().day(0).format('YYYY-MM-DD'); // 上一个周日 2021-01-17
moment().day(1).format('YYYY-MM-DD'); // 本周一:2021-01-18
moment().day(2).format('YYYY-MM-DD'); // 本周二:2021-01-19
moment().day(7).format('YYYY-MM-DD'); // 本周日:2021-01-24
moment().day(14).format('YYYY-MM-DD'); // 本周日的下一个周日:2021-01-31
moment().format('dddd'); // 星期三
以“月”为单位的时间获取
- 本月
moment().startOf('months').format('YYYY-MM-DD'); // 本月开始 2021-01-01
moment().endOf('months').format('YYYY-MM-DD'); // 本月结束 2021-01-31
- 上月
moment().startOf('months').subtract(1,'months').format('YYYY-MM-DD'); // 上月开始 2020-12-01
moment().endOf('months').subtract(1,'months').format('YYYY-MM-DD'); // 上月结束 2020-12-31
以“季度”为单位的时间获取
- 本季度
moment().startOf('quarters').format('YYYY-MM-DD'); // 本季度开始 2021-01-01
moment().endOf('quarters').format('YYYY-MM-DD'); // 本季度结束 2021-03-31
以“年”为单位的时间获取
- 本年
moment().startOf('years').format('YYYY-MM-DD'); // 本年开始 2021-01-01
moment().endOf('years').format('YYYY-MM-DD'); // 本年结束 2021-12-31
其他常见的时间获取方法
模拟数据:当前时间是 17:56
moment().startOf('day').fromNow(); // 18小时前
moment().endOf('day').fromNow(); // 6小时后
moment().startOf('hour').fromNow(); // 1小时前
moment().format('LT'); // 17:56
moment().format('LTS'); // 17:56:04
moment().format('L'); // 2021/1/20
moment().format('l'); // 2021/1/20
moment().format('LL'); // 2021年1月20日
moment().format('ll'); // 2021年1月20日
moment().format('LLL'); // 2021年1月20日下午5点56分
moment().format('lll'); // 2021年1月20日 17:56
moment().format('LLLL'); // 2021年1月20日星期三下午5点56分
moment().format('llll'); // 2021年1月20日星期三 17:56
额外补充
1.为了方便起见,从 2.0.0 版本开始,单数和复数的方法名称都会存在。
2.小时代表字母HH 表示24小时制,字母hh 标识12小时制。
3.YYYY-MM-DD,也可以被写成YYYY/MM/DD或者YYYY.MM.DD或者其他需要传给后端的形式。
可以直接copy使用,希望帮助到路过的小伙伴哦~