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

发布于 2022-09-03 09:12:22 字数 259 浏览 22 评论 0

目前有个这样的需求就是用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的都可以,都能看懂,谢谢了,急求!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

遥远的她 2022-09-10 09:12:22

这样么?

修正一把:

再来修正一把

2020 年 再更(貌似是moment的api有变化,用最新版的moment已经无法正确计算了,随便更如下)

function diffMonths(date1, date2) {
    const a = moment(date1).startOf('month');
    const b = moment(date2).startOf('month');
    const diff = Math.abs(b.diff(a, 'months'));

    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是跑不通的,所以才想到再改一次。万没想到,这么个小东西也确实写了好久

满天都是小星星 2022-09-10 09:12:22

看到你的帖子很有启发, 自己写了一个.

/**
 * Calcaulate diff Months between two month
 *
 * @Author   Hosea
 * @DateTime 2017-08-16T14:56:41+0800
 * @param    {Monment} StartDate
 * @param    {Monment} EndDate
 * @return   {Array} month array
 */
function calDiffMonths(StartDate, EndDate) {
  let CurrentMonth = StartDate.startOf('month');
  let Months = [];
  while (CurrentMonth <= EndDate) {
    Months.push(CurrentMonth.clone());
    CurrentMonth = CurrentMonth.add(1, 'months');
  }
  return Months;
}
提笔书几行 2022-09-10 09:12:22

用了上面的方法是这样的,为什么?
image.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文