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>