js 根据日期算出天数,js日期,js日期计算

JavaScript011

js 根据日期算出天数,js日期,js日期计算,第1张

这个可以,你试下

var begindate = '2010-2-15'

var enddate = '2010-3-25'

function getDateDiff(date1,date2){

var arr1=date1.split('-')

var arr2=date2.split('-')

var d1=new Date(arr1[0],arr1[1],arr1[2])

var d2=new Date(arr2[0],arr2[1],arr2[2])

alert((d2.getTime()-d1.getTime())/(1000*3600*24))

}

getDateDiff(begindate,enddate)

function getCountDays() {

        var curDate = new Date()

        /* 获取当前月份 */

        var curMonth = curDate.getMonth()

       /*  生成实际的月份: 由于curMonth会比实际月份小1, 故需加1 */

       curDate.setMonth(curMonth + 1)

       /* 将日期设置为0, 这里为什么要这样设置, 我不知道原因, 这是从网上学来的 */

       curDate.setDate(0)

       /* 返回当月的天数 */

       return curDate.getDate()

}

//例如,  获取当前月份(现在是3月)的总天数: 

getCountDays()       // 返回31

你这个问题太费劲了,不过终于写好了

===================================================

<script language = "javascript">

/**

* 跟据年份和月份返回当前日期的最大天数

*/

function getMonthMaxDay(year, month) {

if (month == 4 || month == 6 || month == 9 || month == 11) {

return 30

} else if (month != 2) {

return 31

} else {

if (year % 4 == 0 || (year % 100 == 0 &&year % 400 == 0)) {

if (month == 2) {

return 29

}

} else {

if (month == 2) {

return 28

}

}

}

return 0

}

function getNextNumDay(nowDate, dayNum){

var intBeginYear = parseInt(nowDate.substring(0, 4),10)

//从"-"后截取月数

var intBeginMonth = parseInt(nowDate.substring(nowDate.indexOf("-") + 1, nowDate.indexOf("-") + 3),10)

var intBeginDate = parseInt(nowDate.substring(nowDate.lastIndexOf("-") + 1, nowDate.lastIndexOf("-") + 3),10)

var day = new Date(Date.parse(nowDate.replace(/-/g, '/')))//格式化时间

var week = day.getDay()//获得今天是周几

var restDay = parseInt(dayNum/7,10)*2 + dayNum

var otherDay = dayNum%7

if(week == 5)//周5加两天

restDay+=2

if(week == 6)//周6加一天

restDay+=1

var nowDay1 = getAfterDay(dayNum,intBeginDate,intBeginMonth,intBeginYear)

var newday = new Date(Date.parse(nowDay1.replace(/-/g, '/')))//格式化时间

var newWeek = newday.getDay()

if(week == 5)

restDay+=2

if(week == 6)

restDay+=1

return getAfterDay(restDay,intBeginDate,intBeginMonth,intBeginYear)

}

function getAfterDay(dayNum,intBeginDate,intBeginMonth,intBeginYear){

date2 = intBeginDate + dayNum

year2 = intBeginYear

month2 = intBeginMonth

maxDate2 = getMonthMaxDay(year2,month2)

if(date2 >maxDate2){

date2 = date2 - maxDate2

month2 += 1

if(month2 >12){

month2 = month2 - 12

year2 += 1

}else if(month2 == 12){

month2 = 1

year2 += 1

}

}else if(date2 == maxDate2){

date2 = maxDate2

}

if(date2 >getMonthMaxDay(year2,month2)){

getAfterDay(date2,1,month2,year2)//如果减去日期后还是大于下月的天数则递归调用

}

if(parseInt(date2,10) <10){

date2 = '0' + parseInt(date2,10)

}

if(parseInt(month2,10) <10){

month2 = '0' + parseInt(month2,10)

}

var resultDate2 = year2+"-"+month2+"-"+date2

return resultDate2

}

alert(getNextNumDay('2011-01-22',9))

</script>