js计算两个日期间的所有日期

JavaScript08

js计算两个日期间的所有日期,第1张

最近需要写个小功能,就把这个功能拆成小方法了,觉得日期这玩意儿基本上都能用到,就记录下来,方便自己以后查找。

共有如下几种情况:

1、开始日期小于结束日期

2、两个日期相等,天数为0,之间没有日期

3、开始日期小于结束日期,天数为0,之间没有日期

<b>PS</b>:唯一的坑就是new Date()月份的参数介于 0 到 11 之间。也就是说,如果希望把月设置为 8 月,则参数应该是 7。

getTime() :返回从 1970 年 1 月 1 日至今的毫秒数。

getDate():返回日期,一个月中的某一天

setDate():设置日期,一个月中的某一天

js中没有如同C#中的AddDays的方法,

所以重写了Date对象的prototype,扩展了增加日期的方法,

代码如下:

Date.prototype.Format = function(fmt)

{

//author:

meizz

var o

=

{

"M+" : this.getMonth() + 1, //月份

"d+" : this.getDate(), //日

"h+" : this.getHours(), //小时

"m+" : this.getMinutes(), //分

"s+" : this.getSeconds(), //秒

"q+" : Math.floor((this.getMonth() + 3) / 3), //季度

"S" : this.getMilliseconds() //毫秒

}

if

(/(y+)/.test(fmt))

fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 -

RegExp.$1.length))

for (var k

in o)

if (new RegExp("(" + k + ")").test(fmt))

fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) :

(("00" + o[k]).substr(("" + o[k]).length)))

return

fmt

}

Date.prototype.addDays = function(d)

{

this.setDate(this.getDate() + d)

}

Date.prototype.addWeeks = function(w)

{

this.addDays(w * 7)

}

Date.prototype.addMonths= function(m)

{

var d =

this.getDate()

this.setMonth(this.getMonth() + m)

if

(this.getDate() <d)

this.setDate(0)

}

Date.prototype.addYears = function(y)

{

var m =

this.getMonth()

this.setFullYear(this.getFullYear() + y)

if (m

<this.getMonth())

{

this.setDate(0)

}

}

var now = new Date()

now.addDays(1)//加减日期操作

alert(now.Format("yyyy-MM-dd"))