您的位置:首页 > 其它

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

2012-10-26 13:58 946 查看
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日期控件,大家可以去网上搜索下载,这里就不贴出来了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: