2015-10-12 8 views
9

की तारीख प्राप्त करना मैं अगले सोमवार को जावास्क्रिप्ट में कैसे प्राप्त कर सकता हूं? मुझे इंटरनेट में इसका कुछ भी नहीं मिल रहा है और मैंने बहुत सारे कोड और इसकी समझ भी की है लेकिन मैं वास्तव में ऐसा नहीं कर सकता।अगले सोमवार

यहाँ मेरी कोड है:

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

तो आज सोमवार है, तो आप अगले सोमवार चाहते हैं या आज की तारीख (यह ऊपर से एक उदाहरण है, जहां एक सोमवार को आने वाले सोमवार को लौटा दिया जाता है है)? –

+0

@BerozaPaul आज – 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 "), उपरोक्त कोड के बाद 2 अक्टूबर, 2017 को उपरोक्त कोड, जो मंगलवार 26 सितंबर, 2017 के बाद अगले सोमवार है। –

0

इस प्रयास करें,

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

धन्यवाद अमित

+0

यह मुझे गलत मान दे रहा है – nubteens

2

moment.js का उपयोग करना,

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

यह मेरे कंसोल में ठीक काम करता है, लेकिन मेरे नोडजेस कोड में नहीं – bubunyo

+0

मेरे लिए समान रूप से काम करता है - यदि आपने * से थोड़ा अधिक जानकारी दी है तो यह काम नहीं करता है * यह केवल आड़ू होगा - इस कोड को एक ही परिणाम देता है आपके द्वारा स्वीकार किया गया कोड, मुझे लगता है कि आप शायद इसे गलत कर रहे हैं –

+0

मैंने जेएस पहेली में यह कोड गिरा दिया। यह ठीक काम किया। जब मैंने इसे कल अपने उल्का ऐप में गिरा दिया, तो मुझे 14 – bubunyo

0

आप समय क्षेत्रों को संभालने के लिए की जरूरत है, एक विकल्प 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; 
} 
संबंधित मुद्दे