दिनांक में 10 सेकंड जोड़ें


253

मैं जावास्क्रिप्ट दिनांक ऑब्जेक्ट में 10 सेकंड कैसे जोड़ सकता हूं?

कुछ इस तरह:

var timeObject = new Date()     
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;

4
या यदि आप इसे कंस्ट्रक्टर के माध्यम से करना चाहते हैं - नई तिथि (नई तिथि ()। GetTime () + 10000)
जॉन स्ट्राइकर

जवाबों:


417

एक setSecondsतरीका यह भी है:

var t = new Date();
t.setSeconds(t.getSeconds() + 10);

अन्य Date कार्यों की सूची के लिए , आपको एमडीएन की जांच करनी चाहिए


setSeconds सही ढंग से रैप-अराउंड मामलों को संभालेंगे:

var d;
d = new Date('2014-01-01 10:11:55');
alert(d.getMinutes() + ':' + d.getSeconds()); //11:55
d.setSeconds(d.getSeconds() + 10);
alert(d.getMinutes() + ':0' + d.getSeconds()); //12:05


3
खबरदार, मेरे Nodejs अधिष्ठापन एक स्ट्रिंग के रूप में d.getSeconds () लौटाता है। मुझे इसे (+ d.getSeconds ()) में बदलना था। यूनरी प्लस एक स्ट्रिंग को एक संख्या में परिवर्तित करता है। शायद थोड़ा और स्पष्ट 1 * d.getSeconds () होगा
tqwhite

1
@tqwhite, नोड में typeof new Date().getSeconds()लौटता 'number'है, इसलिए मुझे लगता है कि आपके पास अन्य मुद्दे हो सकते हैं (जब तक कि आप नोड या कुछ के पुराने संस्करण पर नहीं हैं)।
zzzzBov 21

2
करने की कोशिश करें d.setSeconds(d.getSeconds() - 92);और आप 1'32 के बजाय 2'32 "अंतर के साथ समाप्त करेंगे।" new Date(d.getTime() - 92*1000);हालांकि काम के साथ समाधान !
राफालोन

1
अनिर्दिष्ट व्यवहार पर भरोसा करना (कि सेटसेकंड (70) एक मिनट और 10 सेकंड के लिए सेकंड में वृद्धि होगी) आम तौर पर खराब अभ्यास की तरह लगता है। (वर्तमान में अगले) उत्तर Date.getTime () + <मिलिसेकंड की संख्या को इंगित करने के लिए इंगित करने के लिए> इच्छित और समर्थित दृष्टिकोण प्रतीत होता है, और प्रत्येक के अनिर्दिष्ट बारीकियों के ज्ञान के बिना विभिन्न भाषाओं से आने वाले अधिकांश प्रोग्रामरों के लिए स्पष्ट होगा विशेष रूप से जावास्क्रिप्ट इंजन।
टॉम डिब्बल

1
ऐतिहासिक समय क्षेत्र के साथ एक समस्या हो सकती है, @ रॉन के जवाब के नीचे टिप्पणियां देखें: stackoverflow.com/a/17267937/198797 । संभवतः एक आम परिदृश्य नहीं है, लेकिन फिर भी एक मुद्दा है।
tsemer

110
// let timeObject = new Date();
// let seconds = 10 * 1000; // 10000 milliseconds
timeObject = new Date(timeObject.getTime() + seconds);

33
... और आपके द्वारा 10000 जोड़ने का कारण यह है कि जावास्क्रिप्ट तिथियां मिलीसेकंड में काम करती हैं, अर्थात 10000 = 10 * 1000
psiphi75

1
और + से पहले timeObject की जरूरत है क्योंकि यह एक नंबर के लिए timeObject कास्ट करता है। तो इसकी तरह timeObject.getTime () रॉन के जवाब में
जेम्स

1
जावास्क्रिप्ट बहुत बुरा है। ये शुरुआती एपीआई थोड़े खराब हैं।
usr

62

सिर्फ हमारे बीच प्रदर्शन के लिए।

समय निकालो

var d = new Date('2014-01-01 10:11:55');
d = new Date(d.getTime() + 10000);

5,196,949 ऑप्स / सेकंड, सबसे तेज़


setSeconds

var d = new Date('2014-01-01 10:11:55');
d.setSeconds(d.getSeconds() + 10);

2,936,604 ऑप्स / सेकंड, 43% धीमा


moment.js

var d = new moment('2014-01-01 10:11:55');
d = d.add(10, 'seconds');

22,549 ऑप्स / सेकंड, 100% धीमा


तो शायद इसकी कम से कम मानव पठनीय (बुरा नहीं है) लेकिन जाने का सबसे तेज़ तरीका :)

jspref ऑनलाइन परीक्षण


3
विवरण के लिए धन्यवाद, बहुत उपयोगी :)
डीन

58
const timeObject = new Date(); 
timeObject = new Date(timeObject.getTime() + 1000 * 10);
console.log(timeObject);

कृपया यह भी देखें: जावास्क्रिप्ट दिनांक ऑब्जेक्ट में 30 मिनट कैसे जोड़ें?


7
यहाँ सभी गलत उत्तरों में से यह सही है।
कोरी म्हॉटर 22

हां, यह सही उत्तर है। दुर्भाग्यवश Google इस प्रश्न का उल्लेख कर रहा है यदि "जावास्क्रिप्ट तिथि ऐड सेकंड्स" की खोज की जा रही है और सबसे अधिक मतदान का उत्तर गलत है।
फिलिप गेटर

2
क्या कोई कृपया बता सकता है कि चयनित उत्तर (वर्तमान में @zzzzBov से) क्या गलत कर रहा है? इससे मेरा काम बनता है।
tsemer

1
@ प्रथम, पहली नज़र में, मुझे लगा कि zzzzBov का उत्तर सही नहीं है, क्योंकि मुझे नहीं लगता था कि यह सीमा से बाहर होने पर मिनट के मूल्य को अपडेट करेगा। लेकिन आपके "चुनौतीपूर्ण" होने के कारण, मैंने एमडीएन की समीक्षा की, और पुष्टि की कि उत्तर निश्चित रूप से सही है। :)
रॉन

1
@tsemer ऐतिहासिक TimeZones समर्थन (उदाहरण के लिए, इंटरनेट एक्सप्लोरर 11) के साथ एक वेब ब्राउज़र में प्रयास करें: अपने सिस्टम टाइमज़ोन को "एशिया / येकातेरिनबर्ग" पर भी सेट करें:var timestamp = Date.parse("2011-03-26T20:59:59.999Z"); var d = new Date(timestamp); d.setSeconds(d.getSeconds() + 10); console.log(d.getTime() - timestamp);
4esn0k

9

इसे इस्तेमाल करे

a = new Date();
a.setSeconds(a.getSeconds() + 10);


3

मेरे पास कुछ नए संस्करण हैं

  1. var t = new Date(Date.now() + 10000);
  2. var t = new Date(+new Date() + 10000);

2

Date()जावास्क्रिप्ट में वस्तु वास्तव में है कि स्मार्ट नहीं है।

यदि आप केवल सेकंड जोड़ने पर ध्यान केंद्रित करते हैं तो यह चीजों को सुचारू रूप से संभालने के लिए लगता है, लेकिन यदि आप सेकंड की एक्स संख्या जोड़ने की कोशिश करते हैं, तो मिनट और घंटों के एक्स नंबर, आदि को जोड़ दें, वही Dateवस्तु जो आप मुसीबत में समाप्त होती है। इसलिए मैं बस केवल setSeconds()विधि का उपयोग करके वापस आया और अपने डेटा को सेकंड में परिवर्तित किया (जो ठीक काम किया)।

यदि कोई Date()सभी सेट विधियों का उपयोग करके किसी वैश्विक ऑब्जेक्ट में समय जोड़ सकता है और अंतिम समय सही ढंग से निकलता है, तो मैं इसे देखना चाहूंगा लेकिन मुझे यह समझ में आता है कि एक सेट विधि का उपयोग किसी दिए गए Date()ऑब्जेक्ट पर एक समय में किया जाना है और इन्हें मिलाने से गंदगी पैदा होती है।

var vTime = new Date();

var iSecondsToAdd = ( iSeconds + (iMinutes * 60) + (iHours * 3600) + (iDays * 86400) );

vTime.setSeconds(iSecondsToAdd);

यहाँ कुछ और दस्तावेज हैं जो मदद कर सकते हैं :


2
  1. आप setSecondsआज से सेकंड प्राप्त करके और केवल 10 सेकंड जोड़कर विधि का उपयोग कर सकते हैं

    var today = new Date();
    today.setSeconds(today.getSeconds() + 10);
  2. आप नई तारीख में 10 * 1000 मिलीसेकंड जोड़ सकते हैं:

    var today = new Date(); 
    today = new Date(today.getTime() + 1000*10);
  3. आप उपयोग कर सकते हैं setTime:

    today.setTime(now.getTime() + 10000)

1

इस तरह आजमाएं।

Date.prototype.addSeconds = function(seconds) {
  var copiedDate = new Date(this.getTime());
  return new Date(copiedDate.getTime() + seconds * 1000);
}

बस कॉल करें और असाइन करें new Date().addSeconds(10)

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