首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何列出与moment.js的2次约会之间的整个月?

如何列出与moment.js的2次约会之间的整个月?
EN

Stack Overflow用户
提问于 2015-04-06 07:11:26
回答 6查看 30.7K关注 0票数 22

我有两次约会

代码语言:javascript
复制
2015-3-30      2013-8-31

我怎样才能列出一个月清单,例如:

代码语言:javascript
复制
[ '2015-3', '2015-2', '2015-1', '2014-12', '2014-11', '2014-10', '2014-09', '2014-08', '2014-07', '2014-06', '2014-05'....., '2013-08' ] 

谢谢。

EN

回答 6

Stack Overflow用户

发布于 2017-05-09 15:39:00

我认为最初的答案并不完全正确,因为您不会在数组中得到'2015-3'。这是因为您的开始日期最终会以'2015-3-31'的形式结束,并且会使条件失效。你可以像下面这样扩展它。

更新:我现在已经包括了克隆dateStart变量,这样它就不会发生任何变异。

代码语言:javascript
复制
var dateStart = moment('2013-8-31');
var dateEnd = moment('2015-3-30');
var interim = dateStart.clone();
var timeValues = [];

while (dateEnd > interim || interim.format('M') === dateEnd.format('M')) {
   timeValues.push(interim.format('YYYY-MM'));
   interim.add(1,'month');
}
票数 33
EN

Stack Overflow用户

发布于 2015-05-13 09:21:40

您在输出中使用多种格式:YYYY和YYYY,所以我选择了第一个格式。你可以编辑你认为合适的。

代码语言:javascript
复制
var startDateString = "2012-5-30";
var endDateString = "2015-8-31";
var startDate = moment(startDateString, "YYYY-M-DD");
var endDate = moment(endDateString, "YYYY-M-DD").endOf("month");

var allMonthsInPeriod = [];

while (startDate.isBefore(endDate)) {
  allMonthsInPeriod.push(startDate.format("YYYY-MM"));
  startDate = startDate.add(1, "month");
};

console.log(allMonthsInPeriod);

document.getElementById("result").innerHTML = allMonthsInPeriod.join("<br />");
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.4/moment.min.js"></script>
<div id="result"></div>

票数 3
EN

Stack Overflow用户

发布于 2015-04-06 07:45:39

您可以尝试使用此示例。

代码语言:javascript
复制
var one = moment("2015-3-30");
  var two = moment("2014-8-31");
  var dateDiffs = [];
  var count = Math.round(moment.duration(one.diff(two)).asMonths());

  month =  two.month() + 1;
  year  =  two.year();

  for (var i=1; i<=count; i++) {
      if (month > 12) {
        month = 1;
        year++;
      }
      dateDiffs.push(year+"-"+month);
      console.log(month);
      month++;
  }

  console.log(dateDiffs);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29466944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档