首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

依据输入的年月日,自动判断生日日期

2012-11-04 
根据输入的年月日,自动判断生日日期aspx页面代码:input typetext idtxtYear runatserver class

根据输入的年月日,自动判断生日日期

aspx页面代码:

<input type="text" id="txtYear" runat="server" class="input_b" value="" style="width: 20px"

                    onblur="NLtoCSRQ($$('txtYear'), $$('txtMonth'), $$('txtDay'),'txtCSRQ')"/>
                年
                <input type="text" id="txtMonth" runat="server" class="input_b" value="" style="width: 20px"
                    onblur="NLtoCSRQ($$('txtYear'), $$('txtMonth'), $$('txtDay'),'txtCSRQ')" />
                月
                <input type="text" id="txtDay" runat="server" class="input_b" value="" style="width: 20px"
                    onblur="NLtoCSRQ($$('txtYear'), $$('txtMonth'), $$('txtDay'),'txtCSRQ')" />
                日
                <input name="txtCSRQ" type="text" id="txtCSRQ" onblur="CSRQtoNL(this,'txtYear','txtMonth','txtDay')" runat="server"
                    onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'%y-%M-%d'})" class="Wdate"

    style="width: 80px" onchange="ReDate(this);" maxlength="10" />


js代码:

//年月日的判断
function NLtoCSRQ(_year, _month, _day, csrqid) {
    //调用方法
    $$(csrqid).value = getStrDate(_year, _month, _day, csrqid);
}

//年月日的判断。根据多条件任意组合 
function getStrDate(_year, _month, _day, csrqid) {

    var date = "";
    //什么一个时间对象
    var d = new Date();
    //获取当前日期
    var stryear = d.getFullYear();
    var strmonth = d.getMonth() + 1;
    var strday = d.getDate();
    //获取传入的时间
    var year = _year.value.Trim();
    var month = _month.value.Trim();
    var day = _day.value.Trim();

    //判断年月日是否为数字
    if (!isIntParse(year)) {
        year.value = "";
        return;
    }
    if (!isIntParse(month)) {
        month.value = "";
        return;
    }
    if (!isIntParse(day)) {
        day.value = "";
        return;
    }

    //判定输入的年月日
    //年份不能大于当前年,不能小于1900年
    if (parseInt(year) < 0 || (2012 - (parseInt(year))) < 1900) {
        year.value = "";
        return;
    }
    //月份不能大于100
    if (parseInt(month) < 0 || parseInt(month) > 100) {
        month.value = "";
        return;
    }
    //日期不能大于100天
    if (parseInt(day) < 0 || parseInt(day) > 100) {
        day.value = "";
        return;
    }

    //表示年份不为空,月份和日期为空
    if (year != "" && month == "" && day == "") {
        if (year == stryear) { date = 0; }
        else {
            date = (stryear - year) + "-" + strmonth + "-" + strday;
        }
    }
    //表示月份不为空,年份和日期为空
    if (year == "" && month != "" && day == "") {
        var d1 = new Date();
        d1.setMonth(d1.getMonth() - month);
        date = d1.getFullYear() + "-" + (d1.getMonth() + 1) + "-" + d1.getDate();
    }

    //表示日期不为空,年份和月份为空
    if (year == "" && month == "" && day != "") {
        //如果当前日期大于输入的日期则直接想减,否则需要进行月份的判定等
        if ((strday - day) > 0) {
            date = (stryear) + "-" + strmonth + "-" + (strday - day);
        } else {
            var d = subDays(day);
            date = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
        }
    }

    //表示年份和月份不为空,日期为空
    if (year != "" && month != "" && day == "") {
        var d = new Date();
        d.setMonth(d.getMonth() - month);
        date = (d.getFullYear() - year) + "-" + (d.getMonth() + 1) + "-" + d.getDate();
    }

    //表示月份和日期不为空,年份为空
    var dy = "";
    if (year == "" && month != "" && day != "") {
        date = getStrMonth(month, day);
    }

    //表示年份、月份和日期都不为空
    if (year != "" && month != "" && day != "") {
        var d = new Date(Date.parse(getStrMonth(month, day).replace(/-/g, "/")));
        date = (d.getFullYear() - year) + "-" + (d.getMonth() + 1) + "-" + d.getDate();
    }

    /////不能以年份日期不为空,月份为空 作为条件返回日期
    return date;
}

//通过月份和日期返回具体的日期
function getStrMonth(month, day) {
    var date;
    var d = subDays(day);

    if (parseInt(month / 12) == 0) {

        if ((d.getMonth() - month) < 0) {
            date = (d.getFullYear() - 1) + "-" + (12 - (month - d.getMonth()) + 1) + "-" + d.getDate();
        } else
            date = d.getFullYear() + "-" + (d.getMonth() - month + 1) + "-" + d.getDate();
    } else {
        if ((d.getMonth() - month % 12) < 0) {
            date = (d.getFullYear() - parseInt(month / 12)) + "-" + (12 - (month % 12 - d.getMonth()) + 1) + "-" + d.getDate();
        } else
            date = (d.getFullYear() - parseInt(month / 12)) + "-" + ((d.getMonth() - (month % 12)) + 1) + "-" + d.getDate();
    }
    return date;
}

//通过相差的天数返回具体时间
function subDays(day) {
    var d = new Date();
    timer = d.getTime() - (day * 24 * 60 * 60 * 1000);
    d.setTime(timer);
    return d;
}


这是反显示的js代码:

//根据选择的时间自动判断相差的年月日 作者:杨吉林
function CSRQtoNL(dd, year, month, day) {
    //获取当前文本框的值
    var dd = dd.value;

    //声明一个时间对象
    var da = new Date();

    //如果传人对象为空则返回
    if (dd == "") return;

    //转换为日期格式
    var d = new Date(Date.parse(dd.replace(/\-/g, "\/")));

    //如果输入的日期大于当前日期则提示错误信息
    if (d > da) alert("时间不能大于当前时间");

    //如果月份为0则自动转为12月份
    var se = da.getMonth() == 0 ? 12 : da.getMonth();

    //如果为0表示应该就是上一年的年份
    if (se == 0) {
        da.getFullYear() = da.getFullYear() - 1;
    }

    //如果当前天数答应输入的日期天数
    if ((da.getDate() - d.getDate()) >= 0) {
        $$(day).value = da.getDate() - d.getDate();
        if (se >= d.getMonth()) {
            $$(month).value = se - d.getMonth();
            $$(year).value = da.getFullYear() - d.getFullYear()
        }
        else {
            //表示和选择的年份一样
            if ((da.getFullYear() - 1) == d.getFullYear()) {
                $$(year).value = 0;
            } else {
                $$(year).value = ((da.getFullYear() - 1) - d.getFullYear());
            }
            $$(month).value = d.getMonth() - se;
        }
    } else {
        var se = da.getMonth() == 0 ? 12 : da.getMonth();
        //如果为0表示应该就是上一年的年份
        if (se == 0) {
            da.getFullYear() = da.getFullYear() - 1;
        }

        //计算当前相差的天数(判断是否瑞年)
        if (se == 2) {
            if (((da.getFullYear()) % 4 == 0 && (da.getFullYear()) % 100 != 0) || (da.getFullYear()) % 400 == 0) {
                $$(day).value = 29 - (d.getDate() - da.getDate());
            } else {
                $$(day).value = 28 - (d.getDate() - da.getDate());
            }
        }

        //计算当前相差的天数(判断是否大小月)
        if ((se + 1) == 4 || (se + 1) == 6 || (se + 1) == 9 || (se + 1) == 11) {
            $$(day).value = 30 - (d.getDate() - da.getDate());
        } else { $$(day).value = 31 - (d.getDate() - da.getDate()); }

        //如果月份相等
        if ((se - 1) >= d.getMonth()) {
            $$(month).value = (se - 1) - d.getMonth();
            $$(year).value = da.getFullYear() - d.getFullYear()
        }
        else {
            if ((da.getFullYear() - 1) == d.getFullYear()) {
                $$(year).value = 0;
            } else {
                $$(year).value = ((da.getFullYear() - 1) - d.getFullYear());
            }
            $$(month).value = d.getMonth() - se;
        }
    }
}


特别提示:文本框的是一个js日期控件,大家可以去网上搜索下载,这里就不贴出来了。

热点排行