जवाबों:
आप इसके साथ एक बना सकते हैं: -
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
var date = new Date();
alert(date.addDays(5));
यदि आवश्यक हो तो महीने को स्वचालित रूप से बढ़ाने का ध्यान रखता है। उदाहरण के लिए:
8/31 + 1 दिन 9/1 हो जाएगा ।
setDate
सीधे उपयोग करने के साथ समस्या यह है कि यह एक उत्परिवर्ती है और इस तरह की चीज से सबसे अच्छा बचा जाता है। ECMA ने Date
एक अपरिवर्तनीय संरचना के बजाय एक उत्परिवर्ती वर्ग के रूप में व्यवहार करने के लिए फिट देखा ।
864E5
किसी कारण से मैं 24*60*60
अपने कोड में लिखना पसंद करता हूँ :)
सही उत्तर :
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
गलत उत्तर :
यह उत्तर कभी-कभी सही परिणाम प्रदान करता है लेकिन बहुत बार गलत वर्ष और महीना लौटाता है। यह उत्तर केवल उसी समय काम करता है जब आप उस तिथि को जोड़ रहे होते हैं जिसमें वर्तमान वर्ष और महीना होता है।
// Don't do it this way!
function addDaysWRONG(date, days) {
var result = new Date();
result.setDate(date.getDate() + days);
return result;
}
प्रमाण / उदाहरण
var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);
सावधान रहें, क्योंकि यह मुश्किल हो सकता है। "कल" सेट करते समय, यह केवल इसलिए काम करता है क्योंकि यह वर्तमान मूल्य "आज" के लिए वर्ष और महीने से मेल खाता है। हालाँकि, सामान्य रूप से "32" जैसी दिनांक संख्या पर सेट करना अभी भी अगले महीने इसे स्थानांतरित करने के लिए ठीक काम करेगा।
var d = new Date(); d.setDate( d.getDate() + 1 );
:?
getDate()
लौटाता है । फिर, कॉलिंग चालू वर्ष में दिन निर्धारित करता है । तो यह है नहीं एक अच्छा सामान्य समाधान। @ AnthonyWJones का जवाब वास्तव में सही तरीके से काम करता है। setDate
var d = new Date(2015,11,30);d.setDate(d.getDate() + 370)
3 जनवरी 2017 देता है जो 2 साल को पार करता है।
मेरा सरल उपाय है:
nextday=new Date(oldDate.getFullYear(),oldDate.getMonth(),oldDate.getDate()+1);
इस समाधान में डेलाइट सेविंग टाइम की समस्या नहीं है। इसके अलावा, कोई भी वर्षों, महीनों, दिनों आदि के लिए किसी भी ऑफसेट को जोड़ / उप कर सकता है।
day=new Date(oldDate.getFullYear()-2,oldDate.getMonth()+22,oldDate.getDate()+61);
सही कोड है
setDate
।
ये उत्तर मुझे भ्रमित करने वाले लगते हैं, मुझे पसंद है:
var ms = new Date().getTime() + 86400000;
var tomorrow = new Date(ms);
getTime () हमें 1970 से मिलीसेकंड देता है, और 86400000 एक दिन में मिलीसेकंड की संख्या है। इसलिए, एमएस में वांछित तिथि के लिए मिलीसेकंड शामिल है।
मिलीसेकंड कंस्ट्रक्टर का उपयोग वांछित दिनांक ऑब्जेक्ट देता है।
new Date(new Date('11/4/2012').getTime() + 86400000)
प्रयत्न
var someDate = new Date();
var duration = 2; //In Days
someDate.setTime(someDate.getTime() + (duration * 24 * 60 * 60 * 1000));
सेटटेट () का उपयोग करते हुए एक तारीख को जोड़ने के लिए अपनी समस्या को हल न करें, कुछ दिनों को एक फरवरी महीने में जोड़ने का प्रयास करें, यदि आप इसमें नए दिन जोड़ने की कोशिश करते हैं, तो इसका परिणाम आपके द्वारा अपेक्षित परिणाम नहीं होगा।
setDate()
? क्या यह ऐसा है: stackoverflow.com/questions/5497637/…
नीचे बिताए गए युगों का काम करने की कोशिश कर रहे उम्र के साथ सौदा नीचे के उदाहरणों का पालन करते समय जोड़ने वाले वर्ष के साथ नहीं था।
यदि आप केवल उन दिनों में केवल तारीखों को जोड़ना चाहते हैं, जिनके लिए आप बस जाने के लिए सर्वश्रेष्ठ हैं:
myDate.setDate (myDate.getDate () + n);
या लंबे समय तक संस्करण
var theDate = new Date(2013, 11, 15);
var myNewDate = new Date(theDate);
myNewDate.setDate(myNewDate.getDate() + 30);
console.log(myNewDate);
यह आज / कल का सामान भ्रामक है। अपने नए दिनांक चर में वर्तमान दिनांक सेट करके आप वर्ष मान को गड़बड़ कर देंगे। यदि आप मूल तिथि से काम करते हैं तो आप नहीं करेंगे।
यदि आप कर सकते हैं, तो moment.js का उपयोग करें । जावास्क्रिप्ट में बहुत अच्छी देशी तिथि / समय विधियाँ नहीं हैं। निम्नलिखित एक पल का वाक्यविन्यास है:
var nextWeek = moment().add(7, 'days');
alert(nextWeek);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js"></script>
int days = 1;
var newDate = new Date(Date.now() + days * 24*60*60*1000);
var days = 2;
var newDate = new Date(Date.now() + days * 24*60*60*1000);
document.write('Today: <em>');
document.write(new Date());
document.write('</em><br/> New: <strong>');
document.write(newDate);
मैंने कल रात ये एक्सटेंशन बनाए:
आप सकारात्मक या नकारात्मक मूल्यों को पारित कर सकते हैं;
उदाहरण:
var someDate = new Date();
var expirationDate = someDate.addDays(10);
var previous = someDate.addDays(-5);
Date.prototype.addDays = function (num) {
var value = this.valueOf();
value += 86400000 * num;
return new Date(value);
}
Date.prototype.addSeconds = function (num) {
var value = this.valueOf();
value += 1000 * num;
return new Date(value);
}
Date.prototype.addMinutes = function (num) {
var value = this.valueOf();
value += 60000 * num;
return new Date(value);
}
Date.prototype.addHours = function (num) {
var value = this.valueOf();
value += 3600000 * num;
return new Date(value);
}
Date.prototype.addMonths = function (num) {
var value = new Date(this.valueOf());
var mo = this.getMonth();
var yr = this.getYear();
mo = (mo + num) % 12;
if (0 > mo) {
yr += (this.getMonth() + num - mo - 12) / 12;
mo += 12;
}
else
yr += ((this.getMonth() + num - mo) / 12);
value.setMonth(mo);
value.setYear(yr);
return value;
}
दूसरे चर का उपयोग किए बिना, आप अपने अगले x दिनों के साथ 7 को बदल सकते हैं:
let d=new Date(new Date().getTime() + (7 * 24 * 60 * 60 * 1000));
घटाना करने के लिए 30 दिनों का उपयोग करें (24 घंटों = 86400000ms)
new Date(+yourDate - 30 *86400000)
सबसे सरल उपाय।
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + parseInt(days));
return this;
};
// and then call
var newDate = new Date().addDays(2); //+2 days
console.log(newDate);
// or
var newDate1 = new Date().addDays(-2); //-2 days
console.log(newDate1);
आपके जवाब के लिए धन्यवाद जेसन जो उम्मीद के मुताबिक काम करता है, यहां आपके कोड और एंथनीवजोन के आसान प्रारूप से एक मिश्रण है:
Date.prototype.addDays = function(days){
var ms = new Date().getTime() + (86400000 * days);
var added = new Date(ms);
return added;
}
पार्टी के लिए देर से, लेकिन अगर आप उपयोग करते हैं एक उत्कृष्ट प्लगइन होता है जिसे मोमेंट कहा जाता है:jQuery
तो
var myDateOfNowPlusThreeDays = moment().add(3, "days").toDate();
http://momentjs.com/docs/#/manipulating/
और वहाँ बहुत सारे अन्य अच्छे सामान!
संपादित करें: jQuery संदर्भ aikeru की टिप्पणी के लिए धन्यवाद हटा दिया
पाइपलाइन ऑपरेटर के लिए बनाया गया एक समाधान :
const addDays = days => date => {
const result = new Date(date);
result.setDate(result.getDate() + days);
return result;
};
उपयोग:
// Without the pipeline operator...
addDays(7)(new Date());
// And with the pipeline operator...
new Date() |> addDays(7);
यदि आपको अधिक कार्यक्षमता की आवश्यकता है, तो मैं सुझाव देता हूं कि दिनांक- fns पुस्तकालय में देखें।
पुराना मुझे पता है, लेकिन कभी-कभी मुझे यह पसंद है:
function addDays(days) {
return new Date(Date.now() + 864e5 * days);
}
Date.prototype.addDays = function(days) {return new Date(this.getTime() + (864e5 * days));};
मेरे पास प्रस्तावित समाधान के साथ दिन के समय बचत के मुद्दे थे।
का उपयोग करके getUTCDate
/ setUTCDate
इसके बजाय, मैंने अपना मुद्दा हल किया।
// Curried, so that I can create helper functions like `add1Day`
const addDays = num => date => {
// Make a working copy so we don't mutate the supplied date.
const d = new Date(date);
d.setUTCDate(d.getUTCDate() + num);
return d;
}
आप जावास्क्रिप्ट का उपयोग कर सकते हैं, कोई jQuery की आवश्यकता नहीं है:
var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate() + numberOfDaysToAdd);
Formatting to dd/mm/yyyy :
var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();
var someFormattedDate = dd + '/'+ mm + '/'+ y;
बिना किसी चर के सामान्य प्रोटोटाइप, यह मौजूदा दिनांक मान पर लागू होता है:
Date.prototype.addDays = function (days) {
return new Date(this.valueOf() + days * 864e5);
}
सेटडेट के लिए मोज़िला डॉक्स () यह नहीं दर्शाता है कि यह महीने के परिदृश्य के अंत को संभाल लेगा। Https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date देखें
तारीख सेट करें()
यही कारण है कि जब मुझे दिन जोड़ने की आवश्यकता होती है, तो मैं सेटटाइम () का उपयोग करता हूं।
इस रूप में सरल:
new Date((new Date()).getTime() + (60*60*24*1000));
मुझे लगता है कि मैं एक उत्तर भी दूंगा:
व्यक्तिगत रूप से, मुझे आभारी चर घोषणा, विधि कॉल और कंस्ट्रक्टर कॉल से बचने का प्रयास करना पसंद है, क्योंकि वे प्रदर्शन पर सभी महंगे हैं। (कारण के भीतर, निश्चित रूप से)
मैं इसे केवल @AnthonyWJones द्वारा दिए गए उत्तर के तहत टिप्पणी के रूप में छोड़ने जा रहा था, लेकिन इसके बारे में बेहतर सोचा।
// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
return this.setTime( 864E5 * days + this.valueOf() ) && this;
};
// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
return date.setTime( 864E5 * days + date.valueOf() ) && date;
};
// Basic Function declaration...
function addDaysToDate( date, days ) {
return date.setTime( 864E5 * days + date.valueOf() ) && date;
};
उपरोक्त डीएसटी का सम्मान करेगा। मतलब अगर आप कई दिन जोड़ते हैं जो डीएसटी को पार करते हैं, तो प्रदर्शित समय (घंटा) उस को प्रतिबिंबित करेगा।
उदाहरण:
Nov 2, 2014 02:00 DST का अंत था।
var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt ); // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) ); // Tue Nov 11 2014 09:30:00
यदि आप DST भर में समय को बनाए रखना चाहते हैं (तो 10:30 अभी भी 10:30 होगा) ...
// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
return this.setDate( this.getDate() + days ) && this;
};
// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
return date.setDate( date.getDate() + days ) && date;
};
// Basic Function declaration...
function addDaysToDate( date, days ) {
return date.setDate( date.getDate() + days ) && date;
};
तो, अब आपके पास ...
var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt ); // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) ); // Tue Nov 11 2014 10:30:00
नहीं, जावास्क्रिप्ट का कोई अंतर्निहित कार्य नहीं है, लेकिन आप कोड की एक सरल रेखा का उपयोग कर सकते हैं
timeObject.setDate(timeObject.getDate() + countOfDays);
मैं कुछ का उपयोग करता हूं जैसे:
new Date(dateObject.getTime() + amountOfDays * 24 * 60 * 60 * 1000)
दिन की बचत समय के साथ काम करता है:
new Date(new Date(2014, 2, 29, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)
नए साल के साथ काम करता है:
new Date(new Date(2014, 11, 31, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)
यह अपंग हो सकता है:
function DateAdd(source, amount, step) {
var factor = 1;
if (step == "day") factor = 24 * 60 * 60 * 1000;
else if (step == "hour") factor = 60 * 60 * 1000;
...
new Date(source.getTime() + amount * factor);
}
मैं निम्नलिखित समाधान का उपयोग कर रहा हूं।
var msInDay = 86400000;
var daysToAdd = 5;
var now = new Date();
var milliseconds = now.getTime();
var newMillisecods = milliseconds + msInDay * daysToAdd;
var newDate = new Date(newMillisecods);
//or now.setTime(newMillisecods);
तिथि में एक कंस्ट्रक्टर है जो एक इंट स्वीकार करता है। यह तर्क 1 जनवरी, 1970 से पहले / बाद के कुल मिलीसेकंड का प्रतिनिधित्व करता है। इसमें एक विधि सेटटाइम भी है जो एक नई दिनांक ऑब्जेक्ट बनाए बिना भी करता है।
हम यहां क्या करते हैं, दिनों को मिलीसेकंड में बदल दिया जाता है और इस मूल्य को गेटटाइम द्वारा प्रदान किए जाते हैं। अंत में, हम डेट (मिलीसेकंड) कंस्ट्रक्टर या सेटटाइम (मिलीसेकंड) विधि को परिणाम देते हैं।
now.setDate(now.getDate() + days);
स्वचालित रूप से DST परिवर्तनों को संभालता है। और मुझे सही करना है, जेएस टाइमस्टैम्प में लीप सेकंड को नजरअंदाज किया जाता है।
संपादित करें:
इसके बजाय setTime()
(या setHours()
) आप इसे इस तरह से कर सकते हैं:
Date.prototype.addDays= function(d){
this.setDate(this.getDate() + d);
return this;
};
var tomorrow = new Date().addDays(1);
पुराना:
उपयोग करने के बजाय setTime()
आप उपयोग कर सकते हैं setHours()
:
Date.prototype.addDays= function(d){
this.setHours(this.getHours() + d * 24);
return this;
};
var tomorrow = new Date().addDays(1);
देखिए JSFiddle ...
d.setDate(d.getDate() + 1);
जावा स्क्रिप्ट में तारीख जोड़ने के लिए बहुत ही सरल कोड।
var d = new Date();
d.setDate(d.getDate() + prompt('how many days you want to add write here'));
alert(d);
वहाँ एक है setDate और एक getDate विधि है, जो आप कुछ इस तरह करने की अनुमति:
var newDate = aDate.setDate(aDate.getDate() + numberOfDays);
यदि आप दोनों को कई दिनों तक घटाना चाहते हैं और अपनी तिथि को मानव पठनीय प्रारूप में प्रारूपित करना चाहते हैं, तो आपको एक कस्टम DateHelper
ऑब्जेक्ट बनाने पर विचार करना चाहिए जो कुछ इस तरह दिखता है:
var DateHelper = {
addDays : function(aDate, numberOfDays) {
aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
return aDate; // Return the date
},
format : function format(date) {
return [
("0" + date.getDate()).slice(-2), // Get day and pad it with zeroes
("0" + (date.getMonth()+1)).slice(-2), // Get month and pad it with zeroes
date.getFullYear() // Get full year
].join('/'); // Glue the pieces together
}
}
// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Add 20 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), 20));
( इस फिडेल को भी देखें )
जावास्क्रिप्ट में प्रोटोटाइप का विस्तार एक अच्छा विचार नहीं हो सकता है , खासकर पेशेवर कोडबेस में।
आप जो करना चाहते हैं, वह मूल Date
वर्ग का विस्तार करना है :
class MyCustomDate extends Date {
addDays(days) {
const date = new MyCustomDate(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
}
const today = new MyCustomDate();
const nextWeek = today.addDays(7)
console.log(nextWeek)
इस तरह, यदि एक दिन जावास्क्रिप्ट एक देशी addDays
विधि को लागू करता है , तो आप कुछ भी नहीं तोड़ेंगे।
Date.prototype.addDays=function(d){return new Date(this.valueOf()+864E5*d);};