2017-02-28 5 views
0

私はjs関数を作りたいです。年と月の数字を入力すると、その月に黒い金曜日がある場合はtrueを返します。 これを行うsimlar moment.jsのメソッドまたは関数はありますか?どうも。moment.js black friday今月ブール

+1

を黒金曜日です11月の最後の金曜日? –

+1

黒金曜日とは何ですか?これまでに何を試しましたか? – VincenzoC

+0

申し訳ありませんが、私は11月か10月ではなく、 "金曜日13日"を意味します。 私は年月を解析してみましたが、13日は金曜日かどうかを確認しましたが、もっと良いアイデアがあることを知りたいです。 – user3160227

答えて

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')) 
2

あなたは、あなたがday()を使用して曜日を取得することができmoment({unit: value, ...});を使用して使用して、指定された月の13日を表す瞬間オブジェクトを作成することができます。 docsが言うように:

この方法は、あなたがday()が5に等しいかどうかを確認することができます6.

として土曜日0として日曜日で、曜日を設定するために使用することができます(金曜日)。ここでは実施例

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です。


マット・ジョンソンはコメントで強調したように、あなたもここで、サンプルネイティブ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

これは良いアプローチです。また、あなたは本当にこれのためにモーメントを必要としないことに注意してください。 'Date'オブジェクトは同様の機能を持っています。 –