2015-10-12 34 views
9

JavaScriptで次の月曜日はどうすればいいですか?私はインターネット上でこれの何かを見つけることができませんし、また、多くのコードとこれを理解しようとしましたが、実際にはできません。次の月曜日の日付を取得する

は、ここに私のコードです:

var d = new Date(); 
var day = d.getDay(); 
d = new Date(d.setDate(d.getDate() + day + (day == 0 ? -6 : 2))); 
+1

今日が月曜日である場合は、次月曜日または今日の日付をしたいですか? –

+0

@BerozaPaul Today – nubteens

+0

次もチェック:http://stackoverflow.com/questions/9481158/how-to-get-the-4-monday-of-a-month-with-js – belford

答えて

23

である場合、これが行います。

var d = new Date(); 
d.setDate(d.getDate() + (1 + 7 - d.getDay()) % 7); 
console.log(d); 
+2

の日付を取得していました。たとえば、「09/26/2017」など、すべての場合に機能していません。32日あります:)月と計算日数をテストする必要があります毎月 –

+1

@MouradIdrissiそれは私にとって正しい結果をもたらします。 'var d = new Date(" 2017-09-26 ")'の後に2017年10月2日(月曜日)の2017年9月26日火曜日以降の次の月曜日が表示されます。 –

0

これはGIなり、これを試してみてください

d = new Date(d); 
var day = d.getDay(), 
diff = d.getDate() - day + (day == 0 ? -6:1); 
alert(new Date(d.setDate(diff))); 

おかげmoment.jsを使用して アミット

+0

これは私に間違った値を与えています – nubteens

2

moment().add(7, 'days').calendar(); 
+2

質問はありませんでした>どのライブラリ/フレームワークを使用できますか? < – Anonymous0day

+3

元の質問のどこにでも言及していますか?人は解決策を探していました。私は人気のある図書館を使って私に譲りました。 – riyadhalnur

9

次の月曜日VEの今日が月曜日

var d = new Date(); 
d.setDate(d.getDate() + (7-d.getDay())%7+1); 

である場合、これは今日になります今日は月曜日

var d = new Date(); 
d.setDate(d.getDate() + ((7-d.getDay())%7+1) % 7); 
+0

これは私のコンソールで正常に動作しますが、私のnodejsコードでは動作しません – bubunyo

+0

は私にとっても同じように動作します。*それ以上の情報を与えても動作しません。あなたが受け入れたコードは、おそらく間違っていると思います。 –

+0

私はこのコードをJSフィドルにドロップしました。それは正常に働いた。昨日、私の流星アプリに落としたとき、私は14 – bubunyo

0

あなたはタイムゾーンを処理する必要がある場合は、1をオプションは、UTCDateメソッドを使用することですsetUTCDate()getUTCDate()。これにより一貫性が得られ、時間帯の設定に関係なく計算が同じになります。

var d = new Date(); 
d.setUTCDate(d.getUTCDate() + (7 - d.getUTCDay()) % 7 + 1); 

(これは月曜日の次の月曜日が返される場合、上記の例である)

0
var closestMonday =() => { 
    var curr_date = new Date(); // current date 
    var day_info = 8.64e+7; // milliseconds per day 
    var days_to_monday = 8 - curr_date.getDay(); // days left to closest Monday 
    var monday_in_sec = curr_date.getTime() + days_to_monday * day_info; // aleary Monday in seconds from 1970 
    var next_monday = new Date(monday_in_sec); // Monday in date object 
    next_monday.setHours(0,0,0); 
    return next_monday; 
} 
関連する問題