我可以使用moment.js获得每月的每月周期吗?

时间:2020-02-03 11:49:35

标签: javascript node.js moment-timezone

我想从上个月的1月15日到本月的2月14日运行查询。我想以这样的方式运行逻辑,即下个月也要这样,例如2月15日至3月14日。我当然不知道如何使用moment.js来解决这个问题

就像我想获取每个月的最后几个月的15号日期和当前月份的14号一样。就像一个周期,从上个月的15号开始,到本月的14号结束

2 个答案:

答案 0 :(得分:1)

给出一个名为date的矩实例,以下方法将计算上个月的15日到当前月份的14日(其中“当前”日期为date参数):

function getRange(date){
  var start = date.clone().startOf("month").add(-1,'months').add(14,'days');
  var end = date.clone().startOf("month").add(13,"days");
  return [start,end];
}

在下面的演示中可以看到一个包含2个测试案例的实时示例。

var testArr = [
   moment(),
   moment({y:2019,M:11,d:31}) // 31 december 2019. (Yes months are zero based!)
];

for(var i=0;i<testArr.length;i++){
    var [start,end] = getRange(testArr[i]);
    console.log(start,' --> ',end);
}


function getRange(date){
  var start = date.clone().startOf("month").add(-1,'months').add(14,'days');
  var end = date.clone().startOf("month").add(13,"days");
  return [start,end];
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

答案 1 :(得分:0)

这个问题将以这种方式解决,我在@Jamiec中添加了简单性

const date = moment();
const start = date.clone().startOf("month").add(-1,'months').add(14,'days');
const end = date.clone().startOf("month").add(13,"days");
console.log(start,end)