मैं वर्तमान तिथि में 1 दिन कैसे जोड़ सकता हूं?


96

मेरे पास एक वर्तमान दिनांक ऑब्जेक्ट है, जिसे जावास्क्रिप्ट दिनांक ऑब्जेक्ट का उपयोग करके एक दिन द्वारा बढ़ाना होगा। मेरे पास निम्नलिखित कोड है:

var ds = stringFormat("{day} {date} {month} {year}", { 
                day: companyname.i18n.translate("day", language)[date.getUTCDay()], 
                date: date.getUTCDate(), 
                month: companyname.i18n.translate("month", language)[date.getUTCMonth()], 
                year: date.getUTCFullYear() 
});

मैं इसमें एक दिन कैसे जोड़ सकता हूं?

मैंने +1 जोड़ा है getUTCDay()और getUTCDate()इसके लिए वह 'संडे' प्रदर्शित नहीं करता है day, जिसकी मुझे उम्मीद है।


1
"ऐड +1" से आपका क्या मतलब है? क्या आपको अगले दिन या कुछ और चाहिए?
अलेक्सा जी

है date: (date.getUTCDate()+1)(मेरे लिए काम करता है) काम नहीं? यह संभव है कि dateदिनांक () (ऑब्जेक्ट के रूप में और ऑब्जेक्ट-कुंजी के साथ एक नामकरण संघर्ष हो । क्या आपने दिनांक () को कॉल करने का प्रयास किया है?
डोमिनिक स्क्रैबर

वर्तमान में यह केवल इस प्रकार दिखाई देता है: <विकल्प मान = "2012-04-06"> सत 6 अप्रैल 2012 </ विकल्प> <विकल्प मूल्य = "2012-04-07"> 7 अप्रैल 2012 </ विकल्प>, नहीं "रविवार अप्रैल २०१२ "
franticfrantic

तो यह 7 Aprआप की जरूरत नहीं है (मेरे लिए 'अगले दिन जोड़ें'), यह है Sunday। जोड़ने का ध्यान रखें +1दोनों में day:और date:(के रूप में वर्तमान जवाब है, का उल्लेख करने से पहले या,)।
डोमिनिक शाइबर

जवाबों:


251

दिनांक ऑब्जेक्ट में एक दिन जोड़ने के लिए:

var date = new Date();

// add a day
date.setDate(date.getDate() + 1);

डुप्लिकेट प्रश्न देखें: stackoverflow.com/questions/3674539/… । यह उत्तर अच्छा है, लेकिन डीएसटी के लिए जिम्मेदार नहीं है। साल के 2 दिन ऐसे होते हैं जिनमें 24 घंटे नहीं होते।
जेस

2
@ जेस — यह इस बात पर निर्भर करता है कि आप डीएसटी के प्रतिनिधित्व के बदलावों को कैसे चाहते हैं। प्रश्न पूछा गया कि किसी एक को तिथि में कैसे जोड़ा जाए, ठीक यही बात उपरोक्त उत्तर में भी है। 24 घंटे जोड़ना जरूरी नहीं है कि तारीख सेट करें, हमेशा सेटडेट का उपयोग करते हुए स्थानीय तारीख में जोड़ें
RobG

यही है जो मेरा मतलब है। 10 मार्च को वृद्धि: var a = new Date("2013-03-10T00:00:00.000Z"); a.setDate(a.getDate() + 1); a.toISOString();है "2013-03-10T23:00:00.000Z"। यह एक सूक्ष्म मामला है जहां उपरोक्त कार्य मेरे लिए काम नहीं करता था।
जेस

1
बिलकूल नही! आप एक यूटीसी समय के साथ शुरू करते हैं, फिर अनिवार्य रूप से इसे स्थानीय में परिवर्तित करते हैं, एक दिन जोड़ते हैं, फिर इसे यूटीसी में परिवर्तित करते हैं। इसलिए एक दिन स्थानीय तारीख में जोड़ा गया , लेकिन यूटीसी समय केवल 23 घंटे था। यदि आप UTC तिथि में 1 जोड़ते हैं, तो आपको स्थानीय समय 01:00:00 बजे मिलेगा। यह व्यवहार डेलाइट सेविंग के लिए अद्वितीय नहीं है, यह तीन अलग-अलग टाइमज़ोन का उपयोग करने का एक परिणाम है।
RobG

8
अहा। मुझे नहीं पता था कि गेटडेट स्थानीय समय में यूटीसी से परिवर्तित हो रहा था । a.setUTCDate(a.getUTCDate() + 1);<- जो ज़ुलु तिथियों के साथ काम करता है।
जेस

41

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

उदाहरण के लिए 28 फरवरी या मार्च 31।

यहाँ एक उदाहरण है कि मैं यह कैसे करूँगा:

var current = new Date(); //'Mar 11 2015' current.getTime() = 1426060964567
var followingDay = new Date(current.getTime() + 86400000); // + 1 day in ms
followingDay.toLocaleDateString();

imo इस सटीकता को सुनिश्चित करता है

यहाँ एक और उदाहरण है जो मुझे पसंद नहीं है जो आपके लिए काम कर सकता है लेकिन ऊपर की खुराक के रूप में साफ नहीं है

var today = new Date('12/31/2015');
var tomorrow = new Date(today);
tomorrow.setDate(today.getDate()+1);
tomorrow.toLocaleDateString();

imho इस === 'पोप'

तो दिन प्रकाश बचत समय के कारण आपमें से कुछ ने मेरे मिलीसेकंड दृष्टिकोण के बारे में पकड़ बना ली है। तो Im इस बाहर को हरा करने के लिए जा रहा है। पहला, कुछ देशों और राज्यों के पास डे लाइट सेविंग टाइम नहीं है। दूसरा 24 घंटे जोड़ना एक पूरा दिन है। यदि वर्ष में एक बार तारीख संख्या की खुराक नहीं बदलती है, लेकिन 6 महीने बाद तय हो जाती है तो मुझे वहां कोई समस्या नहीं दिखती। लेकिन निश्चित होने और दुष्ट तिथि से निपटने के उद्देश्य से (मैंने) यह सोचा है और अब पूरी तरह से तारीख से नफरत है। तो यह मेरा नया दृष्टिकोण है

var dd = new Date(); // or any date and time you care about 
var dateArray =  dd.toISOString().split('T')[0].split('-').concat( dd.toISOString().split('T')[1].split(':') );
// ["2016", "07", "04", "00", "17", "58.849Z"] at Z 

अब मज़ेदार हिस्से के लिए!

var date = { 
    day: dateArray[2],
    month: dateArray[1],
    year: dateArray[0],
    hour: dateArray[3],
    minutes: dateArray[4],
    seconds:dateArray[5].split('.')[0],
    milliseconds: dateArray[5].split('.')[1].replace('Z','')
}

अब हमारे पास हमारी आधिकारिक वैध अंतरराष्ट्रीय तिथि वस्तु स्पष्ट रूप से ज़ुलु मेरिडियन पर लिखी गई है। अब तारीख बदलने के लिए

  dd.setDate(dd.getDate()+1); // this gives you one full calendar date forward
  tomorrow.setDate(dd.getTime() + 86400000);// this gives your 24 hours into the future. do what you want with it.

सेकंड / मिली सेकेंड जोड़ना दिन की बचत के लिए काम नहीं करेगा।
मैट एच

@ मट्ट एच आपको वह विचार कहां से मिला। समय UTC में मिलीसेकंड में 1970/01/01 से
पीटर रूसी

2
यह यूटीसी समय में अगले दिन होगा, हां, लेकिन स्थानीय समय में जरूरी नहीं। यूएस में स्प्रिंग फॉरवर्ड डे पर, दिन में 25 घंटे होते हैं। इसलिए यदि आपके पास 00:00 बजे 3/31/15 है, और स्प्रिंट फॉरवर्ड डे पर 86400000 मिलीसेकंड जोड़ते हैं, तो स्थानीय समय 23:00 बजे 3/31/15 होगा क्योंकि उस दिन 25 घंटे होते हैं।
मैट एच

3
आप इस तरह का प्रभाव देख सकते हैं:var dte = Date.parse('2015-11-01'); console.log(dte); dte.setTime(dte.getTime() + 86400000 ); console.log(dte);
मैट एच

1
यह ओवर-इंजीनियर है। यदि आप इस तरह की समस्या का सामना कर रहे हैं तो लाइब्रेरी का उपयोग करें जैसे क्षण या कुछ और चीजों को आसान बनाने में मदद करने के लिए।
जोशुआ माइकल वैगनर


9
int days = 1;
var newDate = new Date(Date.now() + days*24*60*60*1000);

CodePen

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);


मिलीसेकंड के एक दिन को जोड़ने में विफल रहता है क्योंकि सभी दिन 24 घंटे लंबे नहीं होते हैं जो दिन के उजाले को बचाते हैं। एग चिली 14 मई 2017 की शुरुआत में मध्यरात्रि में दिन की बचत को समाप्त करता है। घड़ियां आधी रात से 23:00 बजे तक वापस आ जाएंगी। इसलिए 2017-05-13 00:00:00 पर 24 घंटे जोड़कर 2017-05-13 23:00:00 का उत्पादन होगा, और तारीख नहीं बदलती (कुछ ब्राउज़र आधी रात को ऐसा करेंगे, अन्य एक मिलीसेकंड के बाद) । :-(
रॉब

2

इस प्रश्न में jpmottin से प्रेरित होकर , यहां एक पंक्ति कोड दिया गया है:

var dateStr = '2019-01-01';
var days = 1;

var result = new Date(new Date(dateStr).setDate(new Date(dateStr).getDate() + days));

document.write('Date: ', result); // Wed Jan 02 2019 09:00:00 GMT+0900 (Japan Standard Time)
document.write('<br />');
document.write('Trimmed Date: ', result.toISOString().substr(0, 10)); // 2019-01-02

उम्मीद है की यह मदद करेगा


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.