javascript - MomentJS - 如何按名称选择一周中的所有天?

标签 javascript momentjs

如何使用 momentJS 选择所有相同的工作日?例如:当月的所有星期一。如果该日是该月的 15 日,则该月有两个星期一,从该月的 0 日到 15 日。也许这是某种循环,因为 momenthJS 应该返回两个日期 - 一个表示第一个星期一,第二个表示给定范围内的第二个星期一,依此类推。

或者有没有其他方法可以通过使用任何其他 JavaScript 库来做到这一点?

最佳答案

正如你所说,循环可以解决这个问题

  • 从您指定的日期起提前 4 周搬家,例如如果我们在该月的最后一个星期一,我们将移动到该月的第一个星期一或之前的日期(如果我们移动到上个月,我们仍然可以通过进行更多迭代来获得正确的日期)
  • 获取您所获日期的月份(您获取的所有日期都应为同一月份)
  • 从每次计算出的初始日期向前移动一周,并检查新日期是否与输入日期具有相同的月份

function weekdaysFromMonth (date) {
  // all the weekdays previous/next to date should be
  // 7 days apart and also have the same month
  var month = date.get('month')
  // make sure that the start date is 4 weeks before now
  // we might go to the previous month but anyway we'll
  // get the correct dates by doing more iterations
  var start = moment(date).subtract(4 * 7, 'days')
  var dates = []

  for (var i = 0; i < 10; i += 1) {
    start.add(7, 'days')
    if (start.get('month') === month) {
      dates.push(moment(start))
    }
  }

  return dates
}

document.write(
  JSON.stringify(
    weekdaysFromMonth(moment()), null, ' '
  )
)
<script src="http://momentjs.com/downloads/moment.js"></script>

关于javascript - MomentJS - 如何按名称选择一周中的所有天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32700705/

相关文章:

javascript - 如何在 Javascript 中使用 Moment js 将 ISO 8601 解析为日期和时间格式?

javascript - 如何使用谷歌应用程序脚本删除事件并发送电子邮件

javascript - 如何在 AngularJS 中同时处理 DOM 操作和状态更改?

javascript - Javascript中如何获取调用节点?

javascript - react 导入: Navigate one folder up

javascript - 时区偏移显示不正确的日期和时间

javascript - 如何在网页上每分钟更新所选时区的时间?

javascript - 使用 MomentJS 将字符串转换为 Javascript 中的时间戳

javascript - 计算日期差异,获取小时、分钟和秒的差异 - 最好通过 js,否则 moment.js

javascript - 使用 ng-keyup 在 angularjs 中搜索对 mysql 的查询,但仅在 3 秒后 $http