2017-10-10 12 views
0

だから私はある種の側面を考え出すのにちょっと戸惑っています。私がしたいのは次のようなものです:JavaScriptの週末の日付を除外する

私はちょうどエンドユーザにOctober 10th, 2017のような日付を表示する単純な日付表示を持っているとしましょう。そして、その日付から一定の日数を差し引くという選択肢があります(オフセットは1,2,3、オフセットはどれも)。私がやって探しています何

が完全にカウントから週末の日付を除外している - ので、今日はMonday, October 9thあり、かつ1のオフセットが選択されている場合、それはFriday the 6thに行きます。 オフセットが2の場合はThursday the 5thになります。 3のオフセットは今日はWednesday, October 11thだった場合、2のオフセットは4のオフセットが完全Thursday the 5thに行く、というように(なり、Monday the 9thにあなたを取るでしょう... Wednesday the 4th

を行きます週末の日付を無視/スキップして、その日のカウント/ダンプする日をにする)。

私はこれまで週末を除いた就業日数、およびその性質のものを計算するための機能の回答しか見つけられませんでした(、momentjs-business npmモジュールを使用していますが、まさに私が必要なもの)。

私はこのコードをはるかに大きなコードベースの一部として扱っていませんでした。投稿のスニペットが混乱の原因になると思います。なぜなら、この質問は比較的単純で簡単です。私は過度に複雑にしたくありません。

ユーザーに表示されている日付からのオフセットを設定するときは、週末は一切含まないようにしてください(ユーザーに表示される日付はです)。

私はこれがすべて意味があることを願っており、さらに情報が必要な場合はお知らせください。正しい方向に私を向けることができる誰のために事前に感謝!

+0

なぜ誰かが下降したように私は研究をしましたが、私が投稿した特定の質問に対する答えはありませんでした。それが私が投稿した理由です。なぜdownvoteが必要だったのか理解していないが、私が十分に見ていないと、誰かがそれを指摘してください、ありがとう... – Lushmoney

+0

は、オフセットをいつも日を引くのだろうか? – kemotoe

+0

はい、どんなオフセットが選択されても、その日数は常に減算されます(*もちろん0以外は0人のオフセットを選択する人はいません)*) – Lushmoney

答えて

1

これは私が思うものを達成するでしょう。これはひどく非効率的であることに注意してください。オフセットが非常に大きい場合、ループの繰り返しごとに新しい日付が生成されます。いくつかは、それはここで

let startDate = new Date('10/10/2017'); 
let endDate = "", offset = 2; 
while(offset > 0){ 
    endDate = new Date(startDate.setDate(startDate.getDate() - 1)); 
    if(endDate.getDay() !== 0 && endDate.getDay() !== 6){ 
     offset--; 
    } 
} 

を最適化することができいじりを使用すると、moment-businessライブラリを使用することができます作業Fiddle

+0

確かに非効率的ですが、まさに私は探していた!私の特定のユースケースでは、ユーザーオフセットは決して5を超えません。どうもありがとうございました!! – Lushmoney

0

JavaScriptの日付オブジェクトには、それが何曜日であるかを示すgetDay()メソッドがあります。これを使用して、どの日付が週末であるかを特定し、それらを除外することができます。

var date = new Date(); 
var dayOfWeek = date.getDay(); 
console.log(dayOfWeek) // 1 for Monday, 2 for Tuesday, etc. 
+0

もちろん、それは最初のことでしたネイティブJSとmoment.jsで、それは除いて、どの日が週末であるかを知ることができますが、そうではありませんが、それは私が意図する方法ではうまくいきません。選択されたオフセットがその日のうちの1つ(土曜日または日曜日)に着陸する場合にのみ機能しますが、たとえば水曜日に11日、&5のオフセットが選択されている場合は、6日の金曜日に移動します私は、週末をカウントの一部として考慮していなくても、水曜日には4日に終了することが必要です。 – Lushmoney

1

です。次のようなsubtractWeekDaysがあります。

元の瞬間を修正してから、瞬間から週を差し引いてください。モーメントを返します。

あなたのコードは次のように考えられます

var m = moment("October 10th, 2017", "MMMM Do, YYYY"); 
business.subtractWeekDays(m, 2); 

あなたはaddWeekDayssubtractWeekDaysコードを見て、外部ライブラリを追加しない場合。

+0

これは、ありがとう、ありがとう! – Lushmoney

関連する問題