moment.js操作日期加减后引发的坑

moment.js

经过加减后,会改变原日期,所以要复制对象才行

奇怪的现象代码

const moment = require('moment')
let start = moment()
console.log(`操作前的start日期: ${start}`)
let end = start.add(1, 'day')
console.log(`操作后的end日期: ${start}`)
console.log((`操作前的end日期: ${end}`))

输出结果

操作前的开始日期: Sat Aug 10 2019 16:14:41 GMT+0800
操作后的开始日期: Sun Aug 11 2019 16:14:41 GMT+0800
操作前的结束日期: Sun Aug 11 2019 16:14:41 GMT+0800

开始日期被操作后改变了自身的值,跟结束日期一样变成了Aug 11 2019

解决方法

方法1.使用moment()函数再包装一次对象
将代码let end = start.add(1, 'day')改成let end = moment(start).add(1, 'day')

方法2.使用clone()方法复制一个对象
将代码let end = start.add(1, 'day')改成let end = start.clone().add(1, 'day')

moment.js中文官网:http://momentjs.cn/

[完]

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容