moment的add、subtract、diff等方法

今天项目中遇到一个需求,起始日期与结束日期相差不能超过31天,使用的组件是antd的DatePicker,看到禁用日期那里使用了moment的diff方法,别的资料有使用add或者abtract方法的,所以自己试了一下,做个记录。

moment 中文官网地址:http://momentjs.cn

moment 英文地址:https://momentjs.com 

add

计算任意指定时间(当前或者给定的具体某一天)后的任意时间。

语法:

moment().add(Number, String);

moment().add(Duration);  // Duration为持续时间,相当于add(Object)语法

moment().add(Object);

示例:


   // 计算任意指定时间(当前或者给定的具体某一天)后的任意时间
    const add1 = moment().add(20,'days').format('YYYY-MM-DD');
    const add2 = moment(obj.endDate).add({days:7,months:1}).format('YYYY-MM-DD');
    const duration = moment.duration({'days' : 5});  // 持续时间 
    const add3 = moment().add(duration).format('YYYY-MM-DD');
    
    console.log('add1',add1)  // 2023-11-08
    console.log('add2',add2)  // 2023-09-12
    console.log('add3',add3)  // 2023-10-24

如果觉得写days、years、hours等等这些字符串过于麻烦的话可以参考官网图片:

表中右侧是左侧的简写

使用案例:

moment().add(7, ‘days’)  等价于  moment().add(7, ‘d’);

subtract

计算任意指定时间(当前或者给定的具体某一天)前的任意时间。

语法:

moment().subtract(Number, String);

moment().subtract(Duration);  // Duration为持续时间,相当于subtract(Object)语法

moment().subtract(Object);

示例:

    // 与add方法正好相反,计算任意指定时间(当前或者给定的具体某一天)前的任意时间
    const subtract = moment(obj.endDate).subtract(7,'d').format('YYYY-MM-DD'); 
    const duration = moment.duration({'days' : 5});  
    const subtract2 = moment().subtract(duration).format('YYYY-MM-DD');
    const subtract3 = moment(obj.endDate).subtract({days:7,months:1}).format('YYYY-MM-DD');

diff

计算两个时间的差值

语法:

moment(endTime).diff(moment(startTime), 'years')

moment(endTime).diff(moment(startTime), 'months')

moment(endTime).diff(moment(startTime), 'days')   

moment(endTime).diff(moment(startTime),'minutes' )

moment(endTime).diff(moment(startTime), 'seconds')

注意:开始时间和结束时间的时间差,以“天”为单位时,endTime和startTime都是毫秒数

示例:

    // 简单使用 计算相差的天数  
    const cul = moment('2023-10-10').diff(moment('2023-10-19'),'days');
    console.log(cul);  // 9

    // 计算小时之间的差
    const date1 = moment('08:30','hh:mm');
    const date2 = moment('18:00','hh:mm');
    const date3 = date2.diff(date1,'minute');//计算相差的分钟数
    const h = Math.floor(date3/60);//相差的小时数
    const mm=date3%60;//计算相差小时后余下的分钟数

    // 在标准日期格式下可以不指定日期的格式 如:
    const date1 = moment('2019-02-28 08:30:00');
    const date2 = moment('2019-02-28 18:00:00');
    const date3 = date2.diff(date1,'minute');//计算相差的分钟数
    const h = Math.floor(date3/60);//相差的小时数
    const mm = date3 % 60;//计算相差小时后余下的分钟数

补充知识

在我们的程序当中,
月份是从0开始,11结束,0月就代表我们实际中的1月;
一周是从周日开始的,所以没有星期七,所以周天返回的是0;

    // 可以使用此代码进行验证
    console.log('month',moment().month());
    console.log('day',moment().add(x,'d').day()); // 传入任意x得到周天的日期即可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值