问题:例如:现在时间是:2009年10月22号 ,2年后的是:2011年10月22号 求:这2年期间一共24个月 ,每个月的天数?
如:2009年10月22号 到2009年11月22号是31天,
2009年11月22号 到2009年12月22号是30天.。。。
用js求出来:
试试这个:
[code="javascript"]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Month's Dates /*获取与fromdate相差monthCount个月的日期*/ function getDistMonths(fromdate,monthCount){ var resultDate,year,month,date; year = fromdate.getFullYear(); date = fromdate.getDate(); var month = fromdate.getMonth()+1+monthCount; var c = parseInt((month-1)/12); month = month%12 || 12; year += c; resultDate = year + '-'+month+'-'+date; return resultDate; } /*接受YYYY-MM-DD的日期字符串参数,返回两个日期相差的天数*/ function getDistDates(startDate,endDate) { var startTime = new Date(Date.parse(startDate.replace(/-/g, "/"))).getTime(); var endTime = new Date(Date.parse(endDate.replace(/-/g, "/"))).getTime(); var dates = Math.abs((startTime - endTime))/(1000*60*60*24); return '共' + dates+ '天'; } /*计算每个月的天数,以数组返回*/ function countMonthDates(months,date) { var results = [];//结果 var _today = date || new Date();//如果不给定起算时间则从今天算起 var _months = months || 24;//如果不给定计算的月数则计算未来两年里面的24月 var startDate = getDistMonths(_today,0);//获得起算日期的YYYY-MM-DD格式的字符串日期 for(var i = 1; i <= _months; i++) { var nextMonthDate = getDistMonths(_today,i);//每个月的截至日期 var o = {}; o.desc = startDate + ' 至 ' + nextMonthDate; o.date = getDistDates(startDate,nextMonthDate);//返回天数 results.push(o); startDate = nextMonthDate;//当前月的结束日期作为下一个月的起始日期 } return results; } window.onload = function() { /*使用举例*/ var strRes = ''; var results = countMonthDates(24,new Date()); if(results.length) { for(var i = 0; i < results.length; i++) { var o = results[i]; //alert(o.desc + ' : ' + o.date); strRes += (o.desc + ' : ' + o.date + '<br/>'); } document.body.innerHTML += strRes; } }
[/code]
[code="输出的结果"]
2009-10-22 至 2009-11-22 : 共31天
2009-11-22 至 2009-12-22 : 共30天
2009-12-22 至 2010-1-22 : 共31天
2010-1-22 至 2010-2-22 : 共31天
2010-2-22 至 2010-3-22 : 共28天
2010-3-22 至 2010-4-22 : 共31天
2010-4-22 至 2010-5-22 : 共30天
2010-5-22 至 2010-6-22 : 共31天
2010-6-22 至 2010-7-22 : 共30天
2010-7-22 至 2010-8-22 : 共31天
2010-8-22 至 2010-9-22 : 共31天
2010-9-22 至 2010-10-22 : 共30天
2010-10-22 至 2010-11-22 : 共31天
2010-11-22 至 2010-12-22 : 共30天
2010-12-22 至 2011-1-22 : 共31天
2011-1-22 至 2011-2-22 : 共31天
2011-2-22 至 2011-3-22 : 共28天
2011-3-22 至 2011-4-22 : 共31天
2011-4-22 至 2011-5-22 : 共30天
2011-5-22 至 2011-6-22 : 共31天
2011-6-22 至 2011-7-22 : 共30天
2011-7-22 至 2011-8-22 : 共31天
2011-8-22 至 2011-9-22 : 共31天
2011-9-22 至 2011-10-22 : 共30天
[/code]
这个主要就是计算一个年份是否是闰年,
http://www.haixiait.com/article.asp?id=5
http://blog.csdn.net/feifniao/archive/2009/03/12/3983300.aspx
http://topcat.iteye.com/blog/55820
aa = new Date(2009,1,1);
bb = new Date(2009,2,1);
mm_sec = (bb.getTime() - aa.getTime())//得到时间戳相减 得到以毫秒为单位的差
of_days = tt / 3600000 / 24
[code="html"]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<br> var getOffDays = function(startDate, endDate) {<br> mmSec = (endDate.getTime() - startDate.getTime()); //得到时间戳相减 得到以毫秒为单位的差<br> return (mmSec / 3600000 / 24); //单位转换为天并返回<br> };<br> alert(getOffDays(new Date(2009,1,1), new Date(2009,2,1)));<br> alert(getOffDays(new Date(2009,2,1), new Date(2009,3,1)));<br> alert(getOffDays(new Date(2009,11,1), new Date(2009,12,1)));<br> alert(getOffDays(new Date(2009,11,10), new Date(2009,12,10)));<br>
[/code]