2017-03-05 7 views
0

木曜日には、moment.jsを使用して再開しようとしています。 この木曜日はではありません。次のもの。木曜日の2日の日付。Moment.js、次の[平日]に来る

私はちょうど来週の木曜日(現在の曜日が木曜日の前にある場合にのみ動作します)

に任意のアイデアを取得し

moment().add(1, 'week').day(4)

を試してみましたか?

+0

あなたは '.weekday()'プロパティを見ましたか? – Jhecht

+0

@Jhecht私は、それについては何ですか? – softcode

+0

平日は何が必要なのですか? – Jhecht

答えて

2

"(今週の曜日が木曜日の場合のみ動作します) .add(1、 'week')はちょうど7日を追加して次週の日付を取得し、その週の4日目を取得しているために起きています。 以下のコードは、あなたのケースに対して完全に機能します。

if(moment().weekday() < 4) 
moment().add(1, 'week').day(4); 
else 
moment().add(2, 'week').day(4); 
1

ないmoment.jsの使用方法について確認してください、しかし平野jsの中で次木曜日は次式で与えられます。ちょうど7日に追加、次木曜日のため

currentDate + (11 - d.getDay() % 7) 

。おそらく、現在の日が木曜日であれば、その2週間後に木曜日たい:いくつかのテストで

var d = new Date(); 
 
console.log(d.toString()); 
 

 
// Shift to next Thursday 
 
d.setDate(d.getDate() + ((11 - d.getDay()) % 7 || 7) + 7) 
 
console.log(d.toString())

または関数にカプセル化:

function nextThursdayWeek(d) { 
 
    d = d || new Date(); 
 
    d.setDate(d.getDate() + ((11 - d.getDay()) % 7 || 7) + 7); 
 
    return d; 
 
} 
 

 
// Test data 
 
[new Date(2017,2,6), // Mon 6 Mar 2017 
 
new Date(2017,2,7), // Tue 7 Mar 2017 
 
new Date(2017,2,8), // Wed 8 Mar 2017 
 
new Date(2017,2,9), // Thu 9 Mar 2017 
 
new Date(2017,2,10), // Fri 10 Mar 2017 
 
new Date(2017,2,11), // Sat 11 Mar 2017 
 
new Date(2017,2,12), // Sun 12 Mar 2017 
 
new Date()   // Today 
 
].forEach(function (date) { 
 
    console.log(date.toString() + ' -> ' + nextThursdayWeek(date).toString()); 
 
});

関連する問題