簡體   English   中英

如何在javascript中給定日期添加月份數?

[英]How To add number of month into the given date in javascript?

我想將月份添加到用戶的選擇日期中。

startdate=document.getElementById("jscal_field_coverstartdate").value;

現在我想從上述開始日期開始添加11個月。 怎么做。

日期格式= 2013-12-01

沒有日期格式,很難分辨,但是您可以這樣嘗試

add11Months = function (date) {
    var splitDate = date.split("-");
    var newDate = new Date(splitDate[0], splitDate[1] - 1, splitDate[2]);
    newDate.setMonth(newDate.getMonth() + 11);
    splitDate[2] = newDate.getDate();
    splitDate[1] = newDate.getMonth() + 1;
    splitDate[0] = newDate.getFullYear();
    return startdate = splitDate.join("-");
}

var startdate = add11Months("2013-12-01");
alert(startdate)

JSFiddle

如果您的startdate是在正確的日期格式,你可以嘗試使用moment.jsDate對象的JavaScript。
在Javascript中,可以通過以下方式實現:

var date = new Date("2013-12-01");
console.log(date);  
//output: Sun Dec 01 2013 05:30:00 GMT+0530 (India Standard Time)
var newdate = date.setDate(date.getDate()+(11*30));  
console.log(new Date(newdate));  
// output: Mon Oct 27 2014 05:30:00 GMT+0530 (India Standard Time)  

在以上幾行中,我默認每月使用30天。 因此,您將獲得准確的11個月但日期偏差很小。 這是你想要的嗎 ? 您也可以這樣做。 希望對您有所幫助:)
有關日期的更多信息,請訪問MDN

您可以這樣做:

var noOfMonths = 11
var startdate = document.getElementById("jscal_field_coverstartdate").value;
startdate.setMonth(startdate.getMonth() + noOfMonths)

嘗試這個:

baseDate.setMonth(2);    
baseDate.setDate(30);
noMonths = 11;
var sum = new Date(new Date(baseDate.getTime()).setMonth(baseDate.getMonth() + noMonths);
if (sum.getDate() < baseDate.getDate()) {  sum.setDate(0);  }
var m = newDate.getDate();
var d =  newDate.getMonth() + 1;
var yyyy = newDate.getFullYear();
return (yyyy+"-"+m+"-"+d);

筆記:

添加月份(例如在1月31日之前添加一個月)可能會使days字段溢出,並導致月份遞增(在這種情況下,您會獲得3月的日期)。 如果要添加月份然后溢出日期,則.setMonth(base_date.getMonth()+ noMonths)可以工作,但是當人們談論增加月份時,這很少有人想到。 它通過消除溢出的Month Day不是零索引來處理29、30或31變成1、2或3的情況,因此.setDate(0)是上個月的最后一天。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM