javascript - Moment js按周和星期几获取一个月的特定日期

标签 javascript jquery angularjs momentjs knockout-2.0

如何使用 moment js 获取给定月份的第二个星期二或给定月份的第三个星期四。

我尝试寻找解决方案,但没有成功。我自己写了它并在下面发布了答案,如果您有更好的解决方案,您可以回答您的实现。

最佳答案

这里是我在评论中链接的答案的更新版本。我用过weekday要使用星期几的语言环境感知,您可以使用 day如果您始终希望星期日为 0,星期六为 6

var getGivenDateOfMonth = function (startDate, dayOfWeek, weekNumber) {
  // Start of the month of the given startDate
  var myMonth = moment(startDate).startOf('month');
  // dayOfWeek of the first week of the month
  var firstDayOfWeek = myMonth.clone().weekday(dayOfWeek);
  // Check if first firstDayOfWeek is in the given month
  if( firstDayOfWeek.month() != myMonth.month() ){
      weekNumber++;
  }
  // Return result
  return firstDayOfWeek.add(weekNumber-1, 'weeks');
}

// Examples
var secondMondayOfJuly = getGivenDateOfMonth('2017-07-10', 1, 2);
console.log(secondMondayOfJuly.format());
var thirdFridayOfJuly = getGivenDateOfMonth('2017-07-10', 5, 3);
console.log(thirdFridayOfJuly.format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

关于javascript - Moment js按周和星期几获取一个月的特定日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056083/

相关文章:

javascript - 滚动时如何从链接中删除 "visited"状态?

javascript - jQuery:如何查找具有相同 src 的元素

jquery - 如何在jQuery中触发自定义事件,传递原始事件和数据

javascript - Angular : hide <td> without gap using ng-hide/ng-show

forms - 提交表单angularjs后,将所有标签的文本颜色更改为红色并为所有无效字段显示红色边框

AngularJS:过滤列表中的重复匹配

javascript - 对如何构建 Electron 应用程序感到困惑

javascript - 可以将方法附加到 javascript 中的单例数组吗?

javascript - 从子 iframe 向父 iframe 发送消息

javascript - 倒计时javascript后显示标签