根据输入的年月日,自动判断生日日期
aspx页面代码:
<input type="text" id="txtYear" runat="server" class="input_b" value="" style="width: 20px"
onblur="NLtoCSRQ($$('txtYear'), $$('txtMonth'), $$('txtDay'),'txtCSRQ')"/>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日期控件,大家可以去网上搜索下载,这里就不贴出来了。