moment.js本月黑色星期五布尔

时间:2017-02-28 13:45:47

标签: momentjs

我想制作一个js函数。当我输入年和月号时,如果该月有黑色星期五,它将返回true。 有没有任何simlar moment.js方法或函数来做到这一点? THX。

2 个答案:

答案 0 :(得分:2)

您可以使用moment({unit: value, ...});创建表示给定月份的第13个的时刻对象,然后您可以使用day()获取星期几。正如docs所说:

  

此方法可用于设置星期几,星期日为0,星期六为6。

所以你可以检查day()是否等于5(星期五)。

这是一个工作示例:

function hasBlackFriday(year, month) {
  return (moment({y: year, M: month, d: 13}).day() === 5);
}

// Test foreach month of 2017
for(var i=0; i<12; i++){
  console.log(hasBlackFriday(2017, i));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

请注意,正如moment({unit: value, ...});文档所说:

  

请注意,与moment(Array)new Date(year, month, date)类似,索引为0个月。

正如Matt Johnson在评论中强调的那样,您也可以使用本机JavaScript Date对象获得相同的结果,这里有一个示例:

function hasBlackFriday(year, month) {
  return (new Date(year, month, 13).getDay() === 5);
}

// Test foreach month of 2017
for(var i=0; i<12; i++){
  console.log(hasBlackFriday(2017, i));
}

答案 1 :(得分:0)

此函数返回给定月份m和年y的上周五的日期。

    function hasBlackFriday(y, m) {
      var date = moment(new Date(y, m - 1, '1'))

      result = date.endOf('month');
      while (result.day() !== 5) {
        result.subtract(1, 'day');
      }
      return result;
    }

    console.log(hasBlackFriday(2017, 4).format('M DD YY'))