// 写日期的下拉列表 ymd.writeDay = function(n) { ymd.clearOptions(ymd.selD); for (var i = 1; i < (n + 1); i++) ymd.selD.options.add(new Option(" " + i + " 日", i)); }
// 初始化 ymd.init = function() { // 初始化年下拉列表 var y = new Date().getFullYear(); // 初始化年 for (var i = startY; i <= endY; i++) ymd.selY.options.add(new Option(" " + i + " 年", i)); // 初始化月下拉列表 for (var i = 1; i < 13; i++) ymd.selM.options.add(new Option(" " + i + " 月", i)); // 设定默认年月 var date1 = (defaultDate == null) ? (new Date()) : (new Date(defaultDate.split('-')[0], defaultDate.split('-')[1] - 1, defaultDate.split('-')[2])); ymd.selY.value = date1.getFullYear(); ymd.selM.value = date1.getMonth() + 1; var n = ymd.monHead[new Date().getMonth()]; // 如果是闰年的二月则天数加一 if (new Date().getMonth() == 1 && ymd.isLeapYear(y)) n++; ymd.writeDay(n); ymd.selD.value = date1.getDate(); } // 年-日联动 ymd.selY.onchange = function() { var y = ymd.selY.options[ymd.selY.selectedIndex].value; var m = ymd.selM.options[ymd.selM.selectedIndex].value;
if (m == "") { ymd.clearOptions(ymd.selD); return; } var n = ymd.monHead[m - 1]; if (m == 2 && ymd.isLeapYear(y)) n++; ymd.writeDay(n); } // 月-日联动 ymd.selM.onchange = function() { var y = ymd.selY.options[ymd.selY.selectedIndex].value; var m = ymd.selM.options[ymd.selM.selectedIndex].value; if (y == "") // 如果未选择年则清空日期列表 { ymd.clearOptions(ymd.selD); return; } var n = ymd.monHead[m - 1];
/*--------------------------------------------------------------------
功能: 年月日三级联动封装类
Author: Chen Rong
Date: 2004-5-26
备注: 此封装类inelm由 meizz 的年月日三级联动修改而成.参数:
selY: 年下拉列表的 id
selM: 月下拉列表的 id
selD: 日下拉列表的 id
startY: 年下拉列表中的起始年份
endY: 年下拉列表中的结束年份
defaultDate: 默认年月日, 格式为 2004-3-12 这种的, 如果不提供则默认为今天调用范例:<script language="javascript" src="chen_ymd.js"></script><select name=YYYY>
<option value="">请选择 年</option>
</select>
<select name=MM>
<option value="">选择 月</option>
</select>
<select name=DD>
<option value="">选择 日</option>
</select>// 调用方法一: 指定默认日期
ymd = new chen_ymd(YYYY, MM, DD, 1999, 2004, '2004-3-5');
// 调用方法二: 不指定默认日期, 默认会设定为今天
// ymd = new chen_ymd(YYYY, MM, DD, 1999, 2004);
------------------------------------------------------------------- */
function chen_ymd(selY, selM, selD, startY, endY, defaultDate)
{
var ymd = this;
ymd.selY = selY;
ymd.selM = selM;
ymd.selD = selD;
ymd.monHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // 是否闰年
ymd.isLeapYear = function(year)
{
return (0 == year%4 && (year%100 !=0 || year%400 == 0));
} // 清除下拉列表的选项
ymd.clearOptions = function(e)
{
for (var i = e.options.length; i > 0; i--)
e.remove(i);
}
// 写日期的下拉列表
ymd.writeDay = function(n)
{
ymd.clearOptions(ymd.selD);
for (var i = 1; i < (n + 1); i++)
ymd.selD.options.add(new Option(" " + i + " 日", i));
}
// 初始化
ymd.init = function()
{
// 初始化年下拉列表
var y = new Date().getFullYear();
// 初始化年
for (var i = startY; i <= endY; i++)
ymd.selY.options.add(new Option(" " + i + " 年", i));
// 初始化月下拉列表
for (var i = 1; i < 13; i++)
ymd.selM.options.add(new Option(" " + i + " 月", i));
// 设定默认年月
var date1 = (defaultDate == null) ? (new Date()) : (new Date(defaultDate.split('-')[0], defaultDate.split('-')[1] - 1, defaultDate.split('-')[2]));
ymd.selY.value = date1.getFullYear();
ymd.selM.value = date1.getMonth() + 1; var n = ymd.monHead[new Date().getMonth()];
// 如果是闰年的二月则天数加一
if (new Date().getMonth() == 1 && ymd.isLeapYear(y))
n++;
ymd.writeDay(n); ymd.selD.value = date1.getDate();
} // 年-日联动
ymd.selY.onchange = function()
{
var y = ymd.selY.options[ymd.selY.selectedIndex].value;
var m = ymd.selM.options[ymd.selM.selectedIndex].value;
if (m == "")
{
ymd.clearOptions(ymd.selD);
return;
}
var n = ymd.monHead[m - 1];
if (m == 2 && ymd.isLeapYear(y))
n++;
ymd.writeDay(n);
}
// 月-日联动
ymd.selM.onchange = function()
{
var y = ymd.selY.options[ymd.selY.selectedIndex].value;
var m = ymd.selM.options[ymd.selM.selectedIndex].value;
if (y == "") // 如果未选择年则清空日期列表
{
ymd.clearOptions(ymd.selD);
return;
}
var n = ymd.monHead[m - 1];
if (m == 2 && ymd.isLeapYear(y))
n++;
ymd.writeDay(n);
} ymd.init();
return ymd;
}
开始日期:
<select id="y1" class="nice">
<option value="">请选择 年</option>
</select>
<select id="m1" class="nice">
<option value="">选择 月</option>
</select><select id="d1" class="nice">
<option value="">选择 日</option>
</select>
结束日期:
<select id="y2" class="nice">
<option value="">请选择 年</option>
</select>
<select id="m2" class="nice">
<option value="">选择 月</option>
</select>
<select id="d2" class="nice">
<option value="">选择 日</option>
</select>
<script language="javascript">
// 初始化年月日联动下拉
ymd1 = new chen_ymd(y1, m1, d1, 1999, 2004,'2004-5-10');
ymd2 = new chen_ymd(y2, m2, d2, 1999, 2004);
</script>
alert(addDay(-30,1));
alert(addDay(-30,2));
alert(addDay(-30,3));
alert(addDay(-30,0));function addDay(days,n)
{
//函数说明:days日期差,n代表如下含义。
var my_date_ago=new Date(new Date() - days * 24 * 60 * 60 * 1000 * -1);//days天的日期
switch (n)
{
case 1:
//返回年
return(my_date_ago.getFullYear());
break;
case 2:
//返回月
return(my_date_ago.getMonth()+1);
break;
case 3:
//返回日
return(my_date_ago.getDate());
break;
default :
//返回全部
return(my_date_ago.getFullYear() + "-" + (my_date_ago.getMonth()+1) + "-" + my_date_ago.getDate());
break;
}
}
</SCRIPT>
<SCRIPT language=javaScript>
<!--Now = new Date();
NowDay = Now.getDate();
NowMonth = Now.getMonth();
NowYear = Now.getYear();
if (NowYear < 2000) NowYear += 1900; //for Netscape//function for returning how many days there are in a month including leap years
function DaysInMonth(WhichMonth, WhichYear)
{
var DaysInMonth = 31;
if (WhichMonth == "04" || WhichMonth == "06" || WhichMonth == "09" || WhichMonth == "11") DaysInMonth = 30;
if (WhichMonth == "02") {
DaysInMonth = 28;
if (WhichMonth == "02" && (WhichYear/4) == Math.floor(WhichYear/4)) {
if ((WhichYear/100) != Math.floor(WhichYear/100)) {
DaysInMonth = 29;
}else{
if ((WhichYear/400) == Math.floor(WhichYear/400)) {
DaysInMonth = 29;
}
}
}
}
return DaysInMonth;
}//function to change the available days in a months
function ChangeOptionDays(Which)
{
DaysObject = eval("document.forms['myform']." + Which + "day");
MonthObject = eval("document.forms['myform']." + Which + "month");
YearObject = eval("document.forms['myform']." + Which + "year"); Month = MonthObject[MonthObject.selectedIndex].text;
Year = YearObject[YearObject.selectedIndex].text; DaysForThisSelection = DaysInMonth(Month, Year);
CurrentDaysInSelection = DaysObject.length;
if (CurrentDaysInSelection > DaysForThisSelection)
{
for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++)
{
DaysObject.options[DaysObject.options.length - 1] = null
}
}
if (DaysForThisSelection > CurrentDaysInSelection)
{
for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++)
{
NewOption = new Option(DaysObject.options.length + 1);
DaysObject.add(NewOption);
}
}
if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}
function ChangeOptionDays1(Which)
{
DaysObject = eval("document.forms['myform']." + Which + "day1");
MonthObject = eval("document.forms['myform']." + Which + "month1");
YearObject = eval("document.forms['myform']." + Which + "year1"); Month = MonthObject[MonthObject.selectedIndex].text;
Year = YearObject[YearObject.selectedIndex].text; DaysForThisSelection = DaysInMonth(Month, Year);
CurrentDaysInSelection = DaysObject.length;
if (CurrentDaysInSelection > DaysForThisSelection)
{
for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++)
{
DaysObject.options[DaysObject.options.length - 1] = null
}
}
if (DaysForThisSelection > CurrentDaysInSelection)
{
for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++)
{
NewOption = new Option(DaysObject.options.length + 1);
DaysObject.add(NewOption);
}
}
if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}
//function to set options to today
function SetToToday(Which)
{
DaysObject = eval("document.forms['myform']." + Which + "Day");
MonthObject = eval("document.forms['myform']." + Which + "Month");
YearObject = eval("document.forms['myform']." + Which + "Year");
YearObject[0].selected = true; MonthObject[NowMonth].selected = true; ChangeOptionDays(Which); DaysObject[NowDay-1].selected = true;
}
<SCRIPT language=javaScript>
<!--Now = new Date();
NowDay = Now.getDate();
NowMonth = Now.getMonth();
NowYear = Now.getYear();
if (NowYear < 2000) NowYear += 1900; //for Netscape//function for returning how many days there are in a month including leap years
function DaysInMonth(WhichMonth, WhichYear)
{
var DaysInMonth = 31;
if (WhichMonth == "04" || WhichMonth == "06" || WhichMonth == "09" || WhichMonth == "11") DaysInMonth = 30;
if (WhichMonth == "02") {
DaysInMonth = 28;
if (WhichMonth == "02" && (WhichYear/4) == Math.floor(WhichYear/4)) {
if ((WhichYear/100) != Math.floor(WhichYear/100)) {
DaysInMonth = 29;
}else{
if ((WhichYear/400) == Math.floor(WhichYear/400)) {
DaysInMonth = 29;
}
}
}
}
return DaysInMonth;
}//function to change the available days in a months
function ChangeOptionDays(Which)
{
DaysObject = eval("document.forms['myform']." + Which + "day");
MonthObject = eval("document.forms['myform']." + Which + "month");
YearObject = eval("document.forms['myform']." + Which + "year"); Month = MonthObject[MonthObject.selectedIndex].text;
Year = YearObject[YearObject.selectedIndex].text; DaysForThisSelection = DaysInMonth(Month, Year);
CurrentDaysInSelection = DaysObject.length;
if (CurrentDaysInSelection > DaysForThisSelection)
{
for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++)
{
DaysObject.options[DaysObject.options.length - 1] = null
}
}
if (DaysForThisSelection > CurrentDaysInSelection)
{
for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++)
{
NewOption = new Option(DaysObject.options.length + 1);
DaysObject.add(NewOption);
}
}
if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}
function ChangeOptionDays1(Which)
{
DaysObject = eval("document.forms['myform']." + Which + "day1");
MonthObject = eval("document.forms['myform']." + Which + "month1");
YearObject = eval("document.forms['myform']." + Which + "year1"); Month = MonthObject[MonthObject.selectedIndex].text;
Year = YearObject[YearObject.selectedIndex].text; DaysForThisSelection = DaysInMonth(Month, Year);
CurrentDaysInSelection = DaysObject.length;
if (CurrentDaysInSelection > DaysForThisSelection)
{
for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++)
{
DaysObject.options[DaysObject.options.length - 1] = null
}
}
if (DaysForThisSelection > CurrentDaysInSelection)
{
for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++)
{
NewOption = new Option(DaysObject.options.length + 1);
DaysObject.add(NewOption);
}
}
if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}
//function to set options to today
function SetToToday(Which)
{
DaysObject = eval("document.forms['myform']." + Which + "Day");
MonthObject = eval("document.forms['myform']." + Which + "Month");
YearObject = eval("document.forms['myform']." + Which + "Year");
YearObject[0].selected = true; MonthObject[NowMonth].selected = true; ChangeOptionDays(Which); DaysObject[NowDay-1].selected = true;
}