こんにちは、これを解決しようとしていますが、できません。日曜日と土曜日を除いて、月の日を計算したいと思います。
これは私のコードです
startOfMonth = moment().clone().startOf('month').format('YYYY-MM-DD');
endOfMonth = moment().clone().endOf('month').format('YYYY-MM-DD');
calculate(startOfMonth, endOfMonth);
calculate(start,end){
var numWorkDays = 0;
var currentDate = start;
console.log(currentDate, end)
while (currentDate <= end) {
if (currentDate !== 1 && currentDate !== 7) {
numWorkDays++;
}
currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD");
console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
}
console.log(numWorkDays)
},
しかし、私の関数は14日しかカウントしておらず、日数は2つ増えています。
あなたは正しい方法で日を追加しています。
問題は、の行から発生console.log
します。ここで、もう一度1日追加します。この行を削除またはコメントしてください:
//console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
さて、あなたのコードには他のいくつかのエラーがあり、それがあなたが期待するものを得ることができない理由です:
0
あり6
、とでは1
ありません7
currentDate
は、は文字列です。たとえば、"2021-02-01"
と1
を比較してい7
ます。その番号を取得するには、この文字列から日付オブジェクトを作成してから、を呼び出す必要がありますday()
したがって、最終的なコードは次のようになります。
startOfMonth = moment().clone().startOf('month').format('YYYY-MM-DD');
endOfMonth = moment().clone().endOf('month').format('YYYY-MM-DD');
function calculate(start,end){
var numWorkDays = 0;
var currentDate = start;
while (currentDate <= end) {
var currentDateAsNumber = moment(currentDate).day();
var dayName = moment(currentDate).format('dddd');
if (currentDateAsNumber !== 0 && currentDateAsNumber !== 6) {
numWorkDays++;
}
currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD");
//console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
}
console.log(numWorkDays)
}
calculate(startOfMonth, endOfMonth);
dayName
必要に応じて変数も追加しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加