Moment.js 常用操作
- JS笔记
- 2023-05-31
- 757热度
- 0评论
获取本周第一天
moment().startOf('week')
获取本周周一
moment().startOf('isoWeek')
获取当前月第一天
moment().startOf('month')
获取当前月最后一天
moment().endOf('month')
获取本周最后一天(周六)
moment().endOf('week')
获取本周周日
moment().endOf('isoWeek')
获取当月第一天是星期几
// 用于设置星期几,其中星期日为 0、星期六为 6
moment().startOf('month').day()
比较两个时间的大小
//第二个参数用于确定精度,且不仅仅是要检查的单个值,因此使用 day 将会检查年份、月份、日期。
moment('2010-10-31').isBefore('2010-12-31', 'day'); // true
moment('2010-10-20').isBefore('2010-12-31', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true
今天
onst startTime = moment(moment().startOf('day').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().valueOf()).format('YYYY/MM/DD HH:mm:ss');
昨天
const startTime = moment(moment().add(-1, 'days').startOf('day').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().add(-1, 'days').endOf('day').valueOf()).format('YYYY/MM/DD HH:mm:ss');
本周
const startTime = moment(moment().week(moment().week()).startOf('week').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().week(moment().week()).endOf('week').valueOf()).format('YYYY/MM/DD HH:mm:ss');
上周
const startTime = moment(moment().week(moment().week() - 1).startOf('week').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().week(moment().week() - 1).endOf('week').valueOf()).format('YYYY/MM/DD HH:mm:ss');
本月
const startTime = moment(moment().month(moment().month()).startOf('month').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().month(moment().month()).endOf('month').valueOf()).format('YYYY/MM/DD HH:mm:ss');
上月
const startTime = moment(moment().month(moment().month() - 1).startOf('month').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().month(moment().month() - 1).endOf('month').valueOf()).format('YYYY/MM/DD HH:mm:ss');
本季度
const startTime = moment(moment().quarter(moment().quarter()).startOf('quarter').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().quarter(moment().quarter()).endOf('quarter').valueOf()).format('YYYY/MM/DD HH:mm:ss');
上季度
const startTime = moment(moment().quarter(moment().quarter() - 1).startOf('quarter').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().quarter(moment().quarter() - 1).endOf('quarter').valueOf()).format('YYYY/MM/DD HH:mm:ss');
本年
const startTime = moment(moment().year(moment().year()).startOf('year').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().year(moment().year()).endOf('year').valueOf()).format('YYYY/MM/DD HH:mm:ss');
上年
const startTime = moment(moment().year(moment().year() - 1).startOf('year').valueOf()).format('YYYY/MM/DD HH:mm:ss');
const endTime = moment(moment().year(moment().year() - 1).endOf('year').valueOf()).format('YYYY/MM/DD HH:mm:ss');
某一时间所在的周一和周日
计算指定日期是这周第几天
moment(filtrateForm.date, 'YYYY-MM-DD').format('E')
周一日期
moment(filtrateForm.date).subtract(weekOfday - 1, 'days').format('YYYY-MM-DD');
周日日期
moment(filtrateForm.date).add(7 - weekOfday, 'days').format('YYYY-MM-DD');
计算两个日期间隔多少天
moment('2023-05-31').diff(moment('2023-09-01'), 'days');
获取昨天的日期
moment( moment().add(-1, 'days').startOf('day').valueOf(), ).format('YYYY-MM-DD 23:59:59');
去年当天日期减一天
moment().subtract(1, 'year').subtract(1, 'days').format('YYYY-MM-DD 00:00:00');
只能选择当天(不包含)之前并且区间最多一年之内的日期(配合antd RangePicker组件使用 )
const disabledDate = current => {
if (!dates || dates.length === 0) {
// 如果未选择日期 择禁止选择当天及当天之后的日期
return current > moment().subtract(1, 'day');
}
// 设置只能选择一年之内的日期
const tooLate = dates[0] && current.diff(dates[0], 'days') > 365;
const tooEarly = dates[1] && dates[1].diff(current, 'days') > 365;
return tooEarly || tooLate;
};
// antd RangePicker 组件
<RangePicker
disabledDate={disabledDate}
onCalendarChange={val => setDates(val)}
placeholder={['开始日期', '结束日期']}
/>
当前日期加一天
moment().add(1, 'days');
当前日期减一天
moment().subtract(1, 'days');
使用moment.js遇到坑
原博: https://www.jianshu.com/p/49952d0e7897
使用add()或subtract()加减日期的时候会改变自身的值,需要复制过后才行。
方法1.使用moment()函数再包装一次对象
将代码const end = start.add(1, 'day')改成const end = moment(start).add(1, 'day')
方法2.使用clone()方法复制一个对象
将代码const end = start.add(1, 'day')改成const end = start.clone().add(1, 'day')