JavaScript推算日期

来源:互联网 发布:南京市大数据重点项目 编辑:程序博客网 时间:2024/04/28 03:24
<html>
<head>
<title>
</title>


<script type="text/javascript">
function DayAddDiff(year, month, day, diff)
{
            var numDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
            var isLeap = false;
            var newyear = year;
            var newmonth = month - 1;
            var n = numDays[newmonth];
            var newday = day;
            var newdiff = diff;
            var ln;
            if (newmonth == 0)
                ln = 31;
            else if(newmonth == 11)
                ln = 31;
            else
                ln = numDays[newmonth + 1];
            if (diff != 0){
                //判断是否润年
                if (year % 4 == 0) {
                    if (year % 100 != 0)
                        isLeap = true;
                    else {
                        if (year % 400 == 0)
                            isLeap = true;
                    }
                }
                if (newmonth == 1 && isLeap)
                    ++n;
                    
                if (newmonth == 0 && isLeap) 
                    ++ln;
                //加值
                var newday = day + newdiff;
                if (newday > 0) {
                    if (newday > n) {
                        newday = newday - n;
                        if (newmonth == 11)
                         {
                            newmonth = 0;
                            newyear += 1;
                            newdiff = newday - 1;
                            return DayAddDiff(newyear, newmonth + 1, 1, newdiff);
                        }
                        else {
                            newmonth += 1
                            newdiff = newday - 1;
                            return DayAddDiff(newyear, newmonth + 1, 1, newdiff);
                        }
                    }
                }
                else if (newday == 0) {
                    if (newmonth == 0)
                     {
                        newmonth = 11
                        newyear += -1;
                        newday = 31;
                    }
                    else {
                        newmonth += -1
                        newday = ln;
                    }
                }
                else {
                    if (newmonth == 0)
                     {
                        newmonth = 11
                        newyear += -1;
                        newdiff = newday;
                        newday = 31;
                        return DayAddDiff(newyear, newmonth + 1, newday, newdiff);
                    }
                    else {
                        newmonth += -1;
                        newdiff = newday;
                        newday = ln;
                        return DayAddDiff(newyear, newmonth + 1, newday, newdiff);
                    }
                }
            }
            //输出字符串
            var daystring = "";
            daystring += year;
            newmonth += 1;
            if (newmonth < 10)
                daystring += "/0" + newmonth;
            else
                daystring += "/" + newmonth;
            if (newday < 10)
                daystring += "/0" + newday;
            else
                daystring += "/" + newday;
            return daystring;
}
var da = DayAddDiff(2008,01,01,30);
alert(da);


</script>


</head>
<body>
</body>
</html>