美文网首页
用moment求两个时间的间隔并格式化

用moment求两个时间的间隔并格式化

作者: 小遁哥 | 来源:发表于2020-06-20 12:45 被阅读0次

    0

    需求1:用后台返回的发货时间,减去现在的时间,告诉用户还有多长时间发货,例如1天24小时36分

    const afterMoment = moment().add({ days: 10, hour: 4, minutes: 20 });
    

    afterMoment.format('YYYY-MM-DD HH:mm:ss')) => 2020-06-30 16:10:40

    const duration = moment.duration(afterMoment.diff(moment()));
    

    或者

     moment.duration(afterMoment - moment())
    

    因为moment().valueOf()可以得到毫秒数,而+-这种操作会隐式调用valueOf

    然后利用moment.duration 提供的duration.days()或者duration.get('day') 这两种方式达到格式化

    后台提供的时间格式moment构造器都是支持的,可惜的是moment.duration 不能直接调用format方法

    毫秒

    moment(Number)
    

     moment.unix(Number)
    

    字符串

    moment(String)
    

    1

    需求2:如果距离发货时间不到12小时,要标红处理

          const isDanger =
            duration 
              .clone()
              .subtract(moment.duration(12, 'h'))
              .asMilliseconds() <= 0;
    

    clone()方法是十分重要的,不然默认会在原对象上处理,会影响到duration.days()的值,有时候你可能并不会发现
    .asMilliseconds 是转化为毫秒,类似的方法还有asDaysasHours
    或者

     const isDanger = duration.asHours() < 12
    

    2

    这一战好像回到了解放前,把大大小小的坏习惯都犯了一遍,想想之前自己因为通读了一遍moment中文网还写了两篇文章,结果现在还是这个鬼样子,究其原因,无非是掉以轻心,问题并未简单的解决后便自乱阵脚,十成功力散去七八成,俨然成了个弱智...

    不过当我写这篇文章的时候又发现了更为简单的写法,过去的自己总是菜的,不进步就会一直菜。

    在实际工作中,还是建议先解决问题在逐步优化,针对当前主要矛盾全力以赴,这样大脑和心脏才不会打架,解决问题也会变得高效。

    相关文章

      网友评论

          本文标题:用moment求两个时间的间隔并格式化

          本文链接:https://www.haomeiwen.com/subject/btmwxktx.html