本分只簡單實現了增加 月份 和 天數 的功能,減法功能暫時沒做,讀者可以自己簡單實現。
年份的計算更簡單,只需要看增減後是否為閏年,如果是閏年的話看看月份是否為二月,如果為二月的話看看日期是否為合理並相應地調整即可。
為了方便我為string型別變數增加了endwith方法用來判斷字串結尾字元(m代表增減月份,y代表增減年份,d代表增減天數)。
// 為string型別變數增加endwith方法用於判斷字串的結尾
string.prototype.endwith=function(endstr)
// 小於10的數字前加0
function formatsmallnum (num)
return newnum
}var monthbs = [1,0,1,0,1,0,1,1,0,1,0,1] // 定義月份的大小
// 處理加減月時,當日大於28時,將新的日在新的月份中合理化
function adjustnewday (newyear, newmonth, newday) else else }}
return newadjustedday;
}// 獲取當月份最大天數
function getmonthmaxdays (newyear, month) else else }}
return newmonthdays;
}// 用來計算增減天數的遞迴
function recursiondays (year, month, day, delaytime) else
return recursiondays(newyear, newmonth, newday, newdelay) }}
// 日期計算
function addtime(date, delay)
newday = adjustnewday(newyear, newmonth, newday);
newmonth = formatsmallnum(newmonth);
newday = formatsmallnum(newday);
var newdate = newyear + "" + newmonth + "" + newday; // 組裝新日期
}if (delay.endwith("d"))
return newdate;
}
由於需求不同,讀者使用時應按照自己需要的格式調整返回值及具體細節。
在參考**中 addtime 方法第乙個引數傳入的日期應為 20180810 這種格式的日期,第二個引數應為 3m (三個月)、 15m (十五個月)、 5y (五年)、 520d (五百二十天)等格式。且**中的返回值格同樣為 20180810 這樣的格式。
進行日期年月日的加減
data lv date b like sy datum.data date ruzi like sy datum.call function rp calc date in interval exporting date date ruzi days 0 天數加n或者減n 不加也不減 寫0 mon...
js處理年月日下拉列表變化
function onload yearchange 年份改變,沒啥好說的,月日下拉列表清空重排就行了 function yearchange var daylist document.getelementbyid daylist daylist.innerhtml for var i 0 i 31...
js獲取當前時間年份,處理年月日
js中獲得當前時間年份 月份 日期 獲取完整的日期 var date new date var y date.getfullyear var m date.getmonth 1 m m 10 0 m m var d time.getdate d d 10 0 d d y 年份 m 月份 d 日期 c...