मुझे जावास्क्रिप्ट में एक दिन से तारीख मूल्य बढ़ाने की आवश्यकता है।
उदाहरण के लिए, मेरे पास दिनांक २०१०-०९ -११ है और मुझे अगले दिन की तारीख को जावास्क्रिप्ट चर में संग्रहित करने की आवश्यकता है।
मैं एक दिन में एक तिथि कैसे बढ़ा सकता हूं?
मुझे जावास्क्रिप्ट में एक दिन से तारीख मूल्य बढ़ाने की आवश्यकता है।
उदाहरण के लिए, मेरे पास दिनांक २०१०-०९ -११ है और मुझे अगले दिन की तारीख को जावास्क्रिप्ट चर में संग्रहित करने की आवश्यकता है।
मैं एक दिन में एक तिथि कैसे बढ़ा सकता हूं?
जवाबों:
आपके लिए तीन विकल्प:
Date
ऑब्जेक्ट (कोई लाइब्रेरी नहीं) का उपयोग करना :# 1 के लिए मेरा पिछला उत्तर गलत था (इसमें 24 घंटे जोड़े गए, दिन के उजाले के समय से संक्रमण के लिए खाते में विफल रहा; क्लेवर ह्यूमन ने बताया कि यह 7 नवंबर 2010 के साथ पूर्वी समयक्षेत्र में विफल हो जाएगा)। इसके बजाय, जिगर का जवाब एक पुस्तकालय के बिना ऐसा करने का सही तरीका है:
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
यह एक महीने (या वर्ष) के अंतिम दिन के लिए भी काम करता है, क्योंकि जावास्क्रिप्ट तिथि ऑब्जेक्ट रोलओवर के बारे में स्मार्ट है:
(यह उत्तर वर्तमान में स्वीकार किया जाता है, इसलिए मैं इसे हटा नहीं सकता। इससे पहले कि मैं ओपी को सुझाव देता कि वे जिगर के स्वीकार करते हैं, लेकिन शायद उन्होंने सूची में आइटम # 2 या # 3 के लिए इसे स्वीकार कर लिया।)
var today = moment();
var tomorrow = moment(today).add(1, 'days');
(सावधान रहें कि add
आप उस उदाहरण को संशोधित करते हैं, जिसे आप नया उदाहरण देने के बजाय उसे कॉल करते हैं, इसलिए today.add(1, 'days')
संशोधित किया जाएगा today
। इसीलिए हम क्लोनिंग सेशन शुरू करते हैं var tomorrow = ...
।)
var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();
Date
कंस्ट्रक्टर ( new Date(year, month, date)
) में खिला सकते हैं ; विनिर्देश की धारा 15.9.2.1 देखें ; यदि आप कई प्रकार के प्रारूप स्वीकार करना चाहते हैं, तो निश्चित रूप से DateJS पर एक नज़र डालें ।
Date.parse
(जिसके साथ आप कितने मिलीसेकंड मिल सकते हैं new Date(ms)
)। लेकिन सावधान रहें, यह ब्राउज़र से ब्राउज़र में भिन्न हो सकता है। कुछ समय पहले तक, कार्यान्वयन केवल उन चीजों के बारे में कर सकता था जो वे चाहते थे Date.parse
। नए 5 वें संस्करण के विनिर्देश में अब एक न्यूनतम प्रारूप है जिसे स्वीकार किया जाना चाहिए, लेकिन मैं अभी तक उस पर भरोसा नहीं करूंगा।
x = new Date(); x2 = new Date(x.getTime() + 1000)
, जहां 1000 मिलीसेकंड की वृद्धि है।
Date
वस्तुएं परस्पर हैं। आप एक ही Date
ऑब्जेक्ट को तीन बार सरणी में स्टोर कर रहे हैं । यदि आप तीन अलग-अलग Date
ऑब्जेक्ट चाहते हैं, तो आपको तीन ऑब्जेक्ट बनाने होंगे:var unavailableDates = []; for (var d = new Date('2017-05-11'); d < new Date('2017-05-13'); d.setDate(d.getDate() + 1)) { unavailableDates.push(new Date(+d)); }
var myDate = new Date();
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
new Date("2009-09-11")
लेकिन फ़ायरफ़ॉक्स नहीं करता है। मुझे लगता है कि अधिकांश ब्राउज़र स्वीकार करते हैं new Date("2009/09/11")
कि एक आसान समाधान होगा var arrivalDate = document.getElementById('arival_date').value; var dayAfter = new Date(arrival_date.replace(/-/g, '/')); dayAfter.setDate(dayAfter.getDate()+1);
।
-
साथ प्रतिस्थापित करने /
और उम्मीद करने से अधिक ठोस दृष्टिकोण कि ब्राउज़र इसे स्वीकार करेंगे, स्ट्रिंग को भागों में विभाजित करना होगा: var dateParts = arrivalDate.split('-'); var y = parseInt(dateParts[0], 10); var m = parseInt(dateParts[1], 10); var d = parseInt(dateParts[2], 10); var dayAfter = new Date(y, m-1, d+1);
ध्यान दें कि हम m-1
यहां उपयोग कर रहे हैं, क्योंकि जावास्क्रिप्ट महीने एनम मान हैं (जनवरी 0, नहीं 1), और d+1
क्योंकि हम प्रारंभिक असाइनमेंट में पहले से ही वृद्धि कर रहा है (यह 29 फरवरी को स्वचालित रूप से सही हो जाएगा, आदि)
इस उत्तर में कोई भी उदाहरण डेलाइट सेविंग टाइम समायोजन दिनों के साथ काम नहीं करता है। उन दिनों में, एक दिन में घंटों की संख्या 24 नहीं होती है (वे 23 या 25 हैं, यह निर्भर करता है कि आप "आगे चल रहे हैं" या "पीछे गिर रहे हैं"।)
नीचे दी गई बचत समय के लिए AddDays javascript फ़ंक्शन खाते हैं:
function addDays(date, amount) {
var tzOff = date.getTimezoneOffset() * 60 * 1000,
t = date.getTime(),
d = new Date(),
tzOff2;
t += (1000 * 60 * 60 * 24) * amount;
d.setTime(t);
tzOff2 = d.getTimezoneOffset() * 60 * 1000;
if (tzOff != tzOff2) {
var diff = tzOff2 - tzOff;
t += diff;
d.setTime(t);
}
return d;
}
यहां वे परीक्षण हैं जो मैंने फ़ंक्शन का परीक्षण करने के लिए उपयोग किए हैं:
var d = new Date(2010,10,7);
var d2 = AddDays(d, 1);
document.write(d.toString() + "<br />" + d2.toString());
d = new Date(2010,10,8);
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 27 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, 1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 28 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
सबसे आसान तरीका यह है कि मिलीसेकंड में कनवर्ट करें और 1000 * 60 * 60 * 24 मिलीसेकंड जोड़ें।
var tomorrow = new Date(today.getTime()+1000*60*60*24);
1000*60*60*24
x गुणा करकेDaysToBeAdded
new Date(+new Date() + 1000*60*60*24)
लेकिन यह वास्तव में getTime()
/ के समान है setTime()
, वास्तव में।
new Date(Date.now()+1000*60*60*24);
दूसरे लोगों के सुझाव का पालन करने से पहले आपको अपनी स्ट्रिंग को पार्स करना होगा:
var dateString = "2010-09-11";
var myDate = new Date(dateString);
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
यदि आप इसे फिर से उसी प्रारूप में चाहते हैं तो आपको वह "मैन्युअल" करना होगा:
var y = myDate.getFullYear(),
m = myDate.getMonth() + 1, // january is month 0 in javascript
d = myDate.getDate();
var pad = function(val) { var str = val.toString(); return (str.length < 2) ? "0" + str : str};
dateString = [y, pad(m), pad(d)].join("-");
लेकिन मैं सुझाव देता हूं कि अन्य उत्तरों में बताए अनुसार Date.js प्राप्त करें, इससे आपको बहुत मदद मिलेगी ।
मुझे लगता है कि कुछ भी सुरक्षित नहीं है .getTime()
और .setTime()
इसलिए, यह सबसे अच्छा होना चाहिए, और साथ ही कलाकार भी।
const d = new Date()
console.log(d.setTime(d.getTime() + 1000 * 60 * 60 * 24)) // MILLISECONDS
.setDate()
अमान्य दिनांक के लिए (जैसे 31 + 1) बहुत खतरनाक है, और यह ब्राउज़र के कार्यान्वयन पर निर्भर करता है।
अगले 5 दिन हो रहे हैं:
var date = new Date(),
d = date.getDate(),
m = date.getMonth(),
y = date.getFullYear();
for(i=0; i < 5; i++){
var curdate = new Date(y, m, d+i)
console.log(curdate)
}
दो तरीके:
1:
var a = new Date()
// no_of_days is an integer value
var b = new Date(a.setTime(a.getTime() + no_of_days * 86400000)
2: पिछली विधि के समान
var a = new Date()
// no_of_days is an integer value
var b = new Date(a.setDate(a.getDate() + no_of_days)
DateObj.toJSON () विधि Ref का उपयोग करके दिनांक का स्ट्रिंग मान प्राप्त करें: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects-Date/toJSON स्लाइस दिनांक से लौटाएं मान और फिर आप जितने दिन चाहें उतनी वृद्धि कर सकते हैं।
var currentdate = new Date();
currentdate.setDate(currentdate.getDate() + 1);
var tomorrow = currentdate.toJSON().slice(0,10);
Date.prototype.AddDays = function (days) {
days = parseInt(days, 10);
return new Date(this.valueOf() + 1000 * 60 * 60 * 24 * days);
}
उदाहरण
var dt = new Date();
console.log(dt.AddDays(-30));
console.log(dt.AddDays(-10));
console.log(dt.AddDays(-1));
console.log(dt.AddDays(0));
console.log(dt.AddDays(1));
console.log(dt.AddDays(10));
console.log(dt.AddDays(30));
परिणाम
2017-09-03T15:01:37.213Z
2017-09-23T15:01:37.213Z
2017-10-02T15:01:37.213Z
2017-10-03T15:01:37.213Z
2017-10-04T15:01:37.213Z
2017-10-13T15:01:37.213Z
2017-11-02T15:01:37.213Z
पूरी तरह से सुनिश्चित नहीं है कि यह एक बग (परीक्षण किया गया फ़ायरफ़ॉक्स 32.0.3 और क्रोम 38.0.2125.101) है, लेकिन निम्न कोड ब्राज़ील (-3 GMT) पर विफल हो जाएगा:
Date.prototype.shiftDays = function(days){
days = parseInt(days, 10);
this.setDate(this.getDate() + days);
return this;
}
$date = new Date(2014, 9, 16,0,1,1);
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
परिणाम:
Fri Oct 17 2014 00:01:01 GMT-0300
Sat Oct 18 2014 00:01:01 GMT-0300
Sat Oct 18 2014 23:01:01 GMT-0300
Sun Oct 19 2014 23:01:01 GMT-0200
तिथि में एक घंटा जोड़ना, यह पूरी तरह से काम करेगा (लेकिन समस्या का समाधान नहीं करता है)।
$date = new Date(2014, 9, 16,0,1,1);
परिणाम:
Fri Oct 17 2014 01:01:01 GMT-0300
Sat Oct 18 2014 01:01:01 GMT-0300
Sun Oct 19 2014 01:01:01 GMT-0200
Mon Oct 20 2014 01:01:01 GMT-0200
कल की तारीख के एक स्ट्रिंग प्रतिनिधित्व में परिणाम। आज की तारीख पाने के लिए नई तारीख () का उपयोग करें, Date.getDate () और Date.setDate () का उपयोग करके एक दिन जोड़ें, और दिनांक ऑब्जेक्ट को एक स्ट्रिंग में परिवर्तित करें।
const tomorrow = () => {
let t = new Date();
t.setDate(t.getDate() + 1);
return `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, '0')}-${String(
t.getDate()
).padStart(2, '0')}`;
};
tomorrow();
देशी जेएस, एक दिन जोड़ने के लिए आप निम्नलिखित कर सकते हैं:
let date = new Date(); // today
date.setDate(date.getDate() + 1) // tomorrow
एक अन्य विकल्प moment
पुस्तकालय का उपयोग करना है:
const date = moment().add(14, "days").toDate()
जावास्क्रिप्ट तिथियों के लिए समयक्षेत्र / दिन की बचत बचत तिथि वृद्धि:
function nextDay(date) {
const sign = v => (v < 0 ? -1 : +1);
const result = new Date(date.getTime());
result.setDate(result.getDate() + 1);
const offset = result.getTimezoneOffset();
return new Date(result.getTime() + sign(offset) * offset * 60 * 1000);
}