JavaScript推算日期

<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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值