javascript - atscript - जावास्क्रिप्ट दिनांक में दिन जोड़ें




जावास्क्रिप्ट इन भाषाओं से प्रेरित (20)

जावास्क्रिप्ट का उपयोग कर वर्तमान Date दिन कैसे जोड़ें। क्या जावास्क्रिप्ट में फ़ंक्शन में बनाया गया है जैसे .Net's AddDay ?


SetDate () के लिए मोज़िला दस्तावेज़ इंगित नहीं करते हैं कि यह महीने के परिदृश्यों को समाप्त करेगा। https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date देखें

तारीख सेट करें()

  • स्थानीय समय के अनुसार एक निर्दिष्ट तारीख के लिए महीने के दिन (1-31) सेट करता है।

यही कारण है कि जब मैं दिन जोड़ने की ज़रूरत है तो मैं setTime () का उपयोग करता हूं।


आप इसके साथ एक बना सकते हैं: -

Date.prototype.addDays = function(days) {
  var dat = new Date(this.valueOf());
  dat.setDate(dat.getDate() + days);
  return dat;
}

var dat = new Date();

alert(dat.addDays(5))

यदि आवश्यक हो तो यह महीने को स्वचालित रूप से बढ़ाने का ख्याल रखता है। उदाहरण के लिए:

8/31 + 1 दिन 9/1 बन जाएगा।

setDate का उपयोग करने में समस्या यह है कि यह एक म्यूटेटर है और इस तरह की चीज से बचा जाता है। ईसीएमए एक अपरिवर्तनीय संरचना के बजाय Date को एक परिवर्तनीय वर्ग के रूप में इलाज के लिए उपयुक्त लग रहा था।


आपके उत्तर के लिए धन्यवाद जेसन जो अपेक्षा के अनुसार काम करता है, यहां आपके कोड और एंथनी WJones के आसान प्रारूप से एक मिश्रण है:

Date.prototype.addDays = function(days){
    var ms = new Date().getTime() + (86400000 * days);
    var added = new Date(ms);
    return added;
}

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

उदाहरण के लिए, 5 दिन जोड़ने के लिए:

var originalDate = new Date('June 25, 2017 12:00:00');

var newDate = dateAdd(originalDate, 5, 'days'); // => June 30, 2017 12:00:00

आप इसे सेकंड, मिनट, महीने, साल इत्यादि के साथ भी उपयोग कर सकते हैं।

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

डीएसटी उदाहरण (ईएसटी):

// Spring (time skips an hour at 2am)
var dstDate = new Date('March 12, 2016 01:15:00');
var newDate1 = dateAdd(dstDate, 1, 'days');   // => March 13, 2016 1:15:00
var newDate2 = dateAdd(dstDate, 24, 'hours'); // => March 13, 2016 02:15:00

// Fall (time goes back an hour at 2am)
var dstDate = new Date('November 5, 2016 01:15:00');
var newDate1 = dateAdd(dstDate, 1, 'days');   // => November 6, 2016 1:15:00
var newDate2 = dateAdd(dstDate, 24, 'hours'); // => November 7, 2016 00:15:00

इसका उपयोग करने के लिए घटक आयात करने के लिए स्वतंत्र महसूस करें!


कोणीय का उपयोग करने वालों के लिए:

बस करो:

$scope.booking.totTijd.setMinutes($scope.booking.totTijd.getMinutes()+15);
$scope.booking.totTijd.setDate($scope.booking.totTijd.getDate() + 1);

जावा स्क्रिप्ट में दिन में जोड़ने के लिए बहुत ही सरल कोड।

var d = new Date();
d.setDate(d.getDate() + prompt('how many days you want to add write here'));
alert(d);


पार्टी के लिए देर हो चुकी है, लेकिन यदि आप jQuery उपयोग करते हैं तो क्षण नामक एक उत्कृष्ट प्लगइन है:

moment.js

var myDateOfNowPlusThreeDays = moment().add(3, "days").toDate();

http://momentjs.com/docs/#/manipulating/

और वहां कई अन्य अच्छी चीजें हैं!

संपादित करें: jQuery संदर्भ को अिकरू की टिप्पणी के लिए धन्यवाद हटा दिया गया


पुराना मुझे पता है, लेकिन कभी-कभी मुझे यह पसंद है:

function addDays(days) {
    return new Date(Date.now() + 864e5 * days);
}

बस उम्र के मुख्य उदाहरणों का पालन करते समय जो जोड़ना था, उसमें काम करने की कोशिश करने में उम्र बिताई।

यदि आप बस उस तारीख को केवल n दिन जोड़ना चाहते हैं जो आपके पास है तो आप बस जाने के लिए सबसे अच्छे हैं:

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

यह आज / कल सामान उलझन में है। वर्तमान दिनांक को अपने नए डेट वैरिएबल में सेट करके आप साल के मूल्य को गड़बड़ कर देंगे। यदि आप मूल तारीख से काम करते हैं तो आप नहीं करेंगे।


मुझे प्रस्तावित समाधान के साथ डेलाइट बचत समय के साथ समस्याएं थीं।

इसके बजाय 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;
}

मेरा समाधान है:

nextday=new Date(oldDate.getFullYear(),oldDate.getMonth(),oldDate.getDate()+1);

इस समाधान में डेलाइट सेविंग के साथ समस्या नहीं है। इसके अलावा, कोई भी साल, महीनों, दिनों आदि के लिए किसी भी ऑफसेट को जोड़ / उप जोड़ सकता है।

day=new Date(oldDate.getFullYear()-2,oldDate.getMonth()+22,oldDate.getDate()+61);

सही कोड है


मैं कुछ इस तरह का उपयोग करता हूं:

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)

इसे parametrized किया जा सकता है:

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

यदि आप कर सकते हैं, moment.js उपयोग 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>

संदर्भ: http://momentjs.com/docs/#/manipulating/add/


सबसे सरल समाधान।

 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-fns है। यह तारीखों को अपरिवर्तनीय मानता है ( Moment.js शायद अपरिवर्तनीयता को कभी नहीं अपनाने वाला होगा ), यह तेज़ है, और इसे मॉड्यूलर रूप से लोड किया जा सकता है।

const newDate = DateFns.addDays(oldDate, 2);

सही उत्तर :

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

सबूत / उदाहरण

इस जेएसफ़ील्ड को देखें

// Correct
function addDays(date, days) {
    var result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
}

// Bad Year/Month
function addDaysWRONG(date, days) {
    var result = new Date();
    result.setDate(date.getDate() + days);
    return result;
}

// Bad during DST
function addDaysDstFail(date, days) {
    var dayms = (days * 24 * 60 * 60 * 1000);
    return new Date(date.getTime() + dayms);    
}

// TEST
function formatDate(date) {
    return (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
}

$('tbody tr td:first-child').each(function () {
    var $in = $(this);
    var $out = $('<td/>').insertAfter($in).addClass("answer");
    var $outFail = $('<td/>').insertAfter($out);
    var $outDstFail = $('<td/>').insertAfter($outFail);
    var date = new Date($in.text());
    var correctDate = formatDate(addDays(date, 1));
    var failDate = formatDate(addDaysWRONG(date, 1));
    var failDstDate = formatDate(addDaysDstFail(date, 1));

    $out.text(correctDate);
    $outFail.text(failDate);
    $outDstFail.text(failDstDate);
    $outFail.addClass(correctDate == failDate ? "right" : "wrong");
    $outDstFail.addClass(correctDate == failDstDate ? "right" : "wrong");
});
body {
    font-size: 14px;
}

table {
    border-collapse:collapse;
}
table, td, th {
    border:1px solid black;
}
td {
    padding: 2px;
}

.wrong {
    color: red;
}
.right {
    color: green;
}
.answer {
    font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
    <tbody>
        <tr>
            <th colspan="4">DST Dates</th>
        </tr>
        <tr>
            <th>Input</th>
            <th>+1 Day</th>
            <th>+1 Day Fail</th>
            <th>+1 Day DST Fail</th>
        </tr>
        <tr><td>03/10/2013</td></tr>
        <tr><td>11/03/2013</td></tr>
        <tr><td>03/09/2014</td></tr>
        <tr><td>11/02/2014</td></tr>
        <tr><td>03/08/2015</td></tr>
        <tr><td>11/01/2015</td></tr>
        <tr>
            <th colspan="4">2013</th>
        </tr>
        <tr>
            <th>Input</th>
            <th>+1 Day</th>
            <th>+1 Day Fail</th>
            <th>+1 Day DST Fail</th>
        </tr>
        <tr><td>01/01/2013</td></tr>
        <tr><td>02/01/2013</td></tr>
        <tr><td>03/01/2013</td></tr>
        <tr><td>04/01/2013</td></tr>
        <tr><td>05/01/2013</td></tr>
        <tr><td>06/01/2013</td></tr>
        <tr><td>07/01/2013</td></tr>
        <tr><td>08/01/2013</td></tr>
        <tr><td>09/01/2013</td></tr>
        <tr><td>10/01/2013</td></tr>
        <tr><td>11/01/2013</td></tr>
        <tr><td>12/01/2013</td></tr>
        <tr>
            <th colspan="4">2014</th>
        </tr>
        <tr>
            <th>Input</th>
            <th>+1 Day</th>
            <th>+1 Day Fail</th>
            <th>+1 Day DST Fail</th>
        </tr>
        <tr><td>01/01/2014</td></tr>
        <tr><td>02/01/2014</td></tr>
        <tr><td>03/01/2014</td></tr>
        <tr><td>04/01/2014</td></tr>
        <tr><td>05/01/2014</td></tr>
        <tr><td>06/01/2014</td></tr>
        <tr><td>07/01/2014</td></tr>
        <tr><td>08/01/2014</td></tr>
        <tr><td>09/01/2014</td></tr>
        <tr><td>10/01/2014</td></tr>
        <tr><td>11/01/2014</td></tr>
        <tr><td>12/01/2014</td></tr>
        <tr>
            <th colspan="4">2015</th>
        </tr>
        <tr>
            <th>Input</th>
            <th>+1 Day</th>
            <th>+1 Day Fail</th>
            <th>+1 Day DST Fail</th>
        </tr>
        <tr><td>01/01/2015</td></tr>
        <tr><td>02/01/2015</td></tr>
        <tr><td>03/01/2015</td></tr>
        <tr><td>04/01/2015</td></tr>
        <tr><td>05/01/2015</td></tr>
        <tr><td>06/01/2015</td></tr>
        <tr><td>07/01/2015</td></tr>
        <tr><td>08/01/2015</td></tr>
        <tr><td>09/01/2015</td></tr>
        <tr><td>10/01/2015</td></tr>
        <tr><td>11/01/2015</td></tr>
        <tr><td>12/01/2015</td></tr>
    </tbody>
</table>


मैंने इस दृष्टिकोण का उपयोग एक पंक्ति में सही तिथि प्राप्त करने के लिए किया है ताकि लोगों को ऊपर क्या कह रहा था उसके बाद एक दिन और एक दिन प्राप्त हो सके।

((new Date()).setDate((new Date()).getDate()+1))

मैंने अभी सोचा कि मैं सामान्य बनाऊंगा (new Date()):

(new Date()).getDate()
> 21

कोड का उपयोग करना ऊपर मैं अब के भीतर यह सब सेट कर सकते हैं Date()में (new Date())है और यह सामान्य रूप से व्यवहार करता है।

(new Date(((new Date()).setDate((new Date()).getDate()+1)))).getDate()
> 22

या Dateवस्तु प्राप्त करने के लिए :

(new Date(((new Date()).setDate((new Date()).getDate()+1))))

function addDays(n){
    var t = new Date();
    t.setDate(t.getDate() + n); 
    var month = "0"+(t.getMonth()+1);
    var date = "0"+t.getDate();
    month = month.slice(-2);
    date = date.slice(-2);
     var date = date +"/"+month +"/"+t.getFullYear();
    alert(date);
}

addDays(5);

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








time