जावास्क्रिप्ट में अब से एक वर्ष का निर्धारण कैसे करें


111

मैं अब की तारीख से एक वर्ष प्राप्त करने की कोशिश कर रहा हूं, और यह काम नहीं कर रहा है।

जे एस:

var now = new Date();

var oneYr = new Date();
oneYr.setYear(now.getYear() + 1);
$("#yearFromNow").append(oneYr.toString());

var oneMonth = new Date();
oneMonth.setMonth(now.getMonth() + 1);
$("#monthFromNow").append(oneMonth.toString());

आउटपुट:

one mo. = Thu Dec 22 112 15:16:01 GMT-0500 (Eastern Standard Time)

one yr. = Sun Jan 22 2012 15:16:01 GMT-0500 (Eastern Standard Time)

वर्ष है Dec 22 112- ?? महीना सही ढंग से प्रदर्शित हो रहा है Jan 22 2012

यदि आप इसके साथ छेड़छाड़ करना चाहते हैं, तो http://jsbin.com/alezaj/edit#javascript,html,live । यह क्रोम और फ़ायरफ़ॉक्स में है।

धन्यवाद!

जवाबों:


88

आपको getFullYear()इसके बजाय उपयोग करना चाहिए getYear()getYear()वास्तविक वर्ष माइनस 1900 लौटाता है (और इसलिए काफी बेकार है)।

इस प्रकार वर्तमान क्षण से ठीक एक वर्ष पहले की तिथि होगी:

var oneYearFromNow = new Date();
oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);

ध्यान दें कि यदि आप 29 फरवरी को ऐसा करते हैं तो तारीख समायोजित हो जाएगी।

इसी तरह, आप एक तारीख प्राप्त कर सकते हैं जो अब से एक महीने बाद getMonth()और setMonth()। यदि आप इसे दिसंबर में करते हैं तो आपको वर्तमान वर्ष से "अगले वर्ष" लुढ़कने की चिंता नहीं करनी चाहिए; तिथि अपने आप समायोजित हो जाएगी। एक ही दिन के लिए महीने के माध्यम से चला जाता है getDate()और setDate()


1
किसी के लिए यह सोचकर कि यह कैसे छलांग लगाता है, मैंने यह फ़ायरफ़ॉक्स कंसोल में किया था ... >> x = new Date ('2000-02-29') -> दिनांक 2000-02-29T00: 00: 00.000Z >> x.setYear (2001) -> 983404800000 >> x.toLocaleFormat ('% d-% b-% Y') -> "01-Mar-2001"
Ivan

29
क्या यह प्रफुल्लित करने वाला नहीं है? जावास्क्रिप्ट में अब से एक वर्ष एक तारीख प्राप्त करने के लिए एक लिखने की आवश्यकता है:new Date(new Date().setFullYear(new Date().getFullYear() + 1))
लुकासम

205

यह Dateभविष्य में सिर्फ एक लाइन के साथ एक साल का निर्माण करेगा । पहले हम fullYearएक से प्राप्त करते हैं new Date, इसे बढ़ाते हैं, एक वर्ष के रूप में निर्धारित करते हैं new Date। आपको लगता है कि हम वहाँ किया जाएगा, लेकिन अगर हम इसे रोकते हैं तो यह टाइमस्टैम्प लौटाएगा, एक Dateवस्तु नहीं तो हम एक Dateनिर्माणकर्ता में पूरी चीज़ लपेटते हैं ।

new Date(new Date().setFullYear(new Date().getFullYear() + 1))

13
setYear()है पदावनत , setFullYear()बजाय प्रयोग किया जाना चाहिए।
tsauerwein

1
एक मध्यवर्ती लाइन के साथ कोई लाइनर आवंटित करने के लिए! अति उत्कृष्ट!
TheUtherSide

1
यह घंटों, मिनटों और सेकंड्स को हैंडल नहीं करेगा, इसे वर्तमान समय पर सेट किया जाएगा
धीरज

32

जैसा setYear()कि निकाला गया है, सही प्रकार है:

// plus 1 year
new Date().setFullYear(new Date().getFullYear() + 1)
// plus 1 month
new Date().setMonth(new Date().getMonth() + 1)
// plus 1 day
new Date().setDate(new Date().getDate() + 1)

सभी उदाहरण यूनिक्स टाइमस्टैम्प लौटाते हैं, यदि आप Dateऑब्जेक्ट प्राप्त करना चाहते हैं - बस इसे दूसरे के साथ लपेटेंnew Date(...)


6

इस पृष्ठ पर कुछ उत्तर का उपयोग करना और यहाँ , मैं के रूप में इन उत्तरों से कोई भी पूरी तरह से मेरे लिए इसे हल मेरे अपने जवाब के साथ आया था।

यहाँ यह क्रूर है

var startDate = "27 Apr 2017";
var numOfYears = 1;
var expireDate = new Date(startDate);
expireDate.setFullYear(expireDate.getFullYear() + numOfYears);
expireDate.setDate(expireDate.getDate() -1);

और यहाँ एक JSField है जिसका एक कार्यशील उदाहरण है: https://jsfiddle.net/wavesailor/g9a6qqq/


1
whats expireDate.getDate () - 1 के लिए?
उजर


1

सेटफ़ुलियर का उपयोग करें जैसा कि अन्य लोगों ने पोस्ट किया है, लेकिन ध्यान रखें कि यह एक टाइमस्टैम्प वैल्यू है जो दिनांक ऑब्जेक्ट नहीं है। यह प्रोटोटाइप के माध्यम से कार्यक्षमता को जोड़ने के लिए एक अच्छा उम्मीदवार भी है। यह हमें निम्नलिखित पैटर्न की ओर ले जाता है:

Date.prototype.addYears = function(n) {
    var now = new Date();
    return new Date(now.setFullYear(now.getFullYear() + n));
};

console.log('Year from now is', new Date().addYears(1));

0

बहुत सरल तरीके से। इस कोड का उपयोग करें।

// define function 
function nextYearDate(date1) {
    var date2 = new Date(date1);
    var date3 = date2.setDate(date2.getDate() - 1);
    var date = new Date(date3);
    var day = date.getDate();
    var month = date.getMonth()+1;
    var year = date.getFullYear()+1;
    var newdate = year + '-' + (month < 10 ? '0' : '') + month + '-' + (day < 10 ? '0' : '') + day;
    $("#next_date").val(newdate);
}
// call function.
<input type="date" name="current_date" id="current_date" value="" onblur="nextYearDate(this.value);" />

<input type="date" name="next_date" id="next_date" value="" onblur="nextYearDate(this.value);" />

1
पृथ्वी पर क्यों JQuery अपने बदसूरत सिर यहाँ पीछे है? JQuery! = JS
Uzer
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.