javascript - moment.js 如何计算某天 到 某天 经过了多少月, 分别是那几个月?

查看:185
本文介绍了javascript - moment.js 如何计算某天 到 某天 经过了多少月, 分别是那几个月?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

目前有个这样的需求就是用moment.js 能不能得到 某一天到某一天一共经过了几个月,那几个月?

比如: 2016-01-15 / 2016-07-31 通过计算能得到 这之间经过了 2016-01、2016-02、2016-03、2016-04、2016-05、2016-06、2016-07 这几个月

哪位大神能帮忙看看这个应该怎么写? moment里面貌似没有这样的功能? 没有moment的也没关系, 纯js/PHP/JAVA的都可以,都能看懂,谢谢了,急求!

解决方案

这样么?

修正一把:

再来修正一把

var diffMonths = function(date1, date2) {
    var a = moment(date1);
    var b = moment(date2);
    var diff = b.format('YM') - a.format('YM');
    diff = b.format('Y') !== a.format('Y') ? diff + 2 : diff;

    return Array.apply([], new Array(diff + 1)).map(function(item, index) {
        return a.clone().add(index, 'months').format('YYYY-MM');
    });
};


console.log(diffMonths([2016, 0, 15], [2016, 6, 31]));
console.log(diffMonths([2016, 6, 31], [2016, 7, 1]));
console.log(diffMonths([2016, 6, 1], [2016, 6, 31]));
console.log(diffMonths([2016, 6, 31], [2016, 8, 1]));
console.log(diffMonths([2016, 6, 31], [2017, 8, 1]));
console.log(diffMonths([2016, 6, 31], [2017, 0, 1]));

我看了你最后一次提供的做法,光比较月份的话,最后两个case是跑不通的,所以才想到再改一次。万没想到,这么个小东西也确实写了好久

这篇关于javascript - moment.js 如何计算某天 到 某天 经过了多少月, 分别是那几个月?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆