momentJS日期处理类库---时间加减处理

计算最近在使用JavaScript计算时间差的时候,发现很多问题需要处理,在查看momentJS之后,发现非常容易。


        console.log(moment().format("YYYY-MM-DD HH:mm:ss")); //当前时间
        console.log(moment().subtract(10, "days").format("YYYY-MM-DD"));    //当前时间的前10天时间
        console.log(moment().subtract(1, "years").format("YYYY-MM-DD"));    //当前时间的前1年时间
        console.log(moment().subtract(3, "months").format("YYYY-MM-DD"));   //当前时间的前3个月时间
        console.log(moment().subtract(1, "weeks").format("YYYY-MM-DD"));    //当前时间的前一个星期时间

在实际应用中,我们经常需要计算两个时间的差值,用来确定消逝的时间,如下:

var m1 = moment('2017-12-18 10:00:20'),
    m2 = moment('2017-12-18 10:10:00'),
    du = moment.duration(m2 - m1, 'ms');
//  输出结果为“10 分钟”
console.log(du.locale('zh-cn').humanize())

在要求精确的环境中,比如要精确到秒,并且能提供秒递增的动画功能,此时“humanize()”就显得力不从心,但duration又没有提供moment的“format”方法,怎么办呢?

初步的想法是将moment.duration对象转换为moment对象,然后再利用“format”方法进行转换,但是结果却多了8小时,如下:

var m1 = moment('2017-12-18 10:00:20'),
    m2 = moment('2017-12-18 10:10:00'),
    du = moment(m2 - m1).format('HH时mm分ss秒');
//  输出结果为08时09分40秒
console.log(du);


8小时,很容易就让我们想到是时区的问题,可以通过如下方式进行验证:

 

du = moment(m2 - m1).format('HH时mm分ss秒 ZZ');
//  输出结果为08时09分40秒 +0800
console.log(du)


粗暴的方式是直接减去8小时的数据,优雅的方式是引入Moment Timezone,如下:

//  Africa/Abidjan为+00:00时区
//  输出结果00时09分40秒
du = moment.tz(m2 - m1, "Africa/Abidjan").format('HH时mm分ss秒')
 

http://momentjs.cn/   中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值