http://expert.csdn.net/Expert/topic/3007/3007382.xml?temp=.3511469

解决方案 »

  1.   

    这个是inelm做的
    /*-------------------------------------------------------------------- 
    功能: 年月日三级联动封装类
    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;
    }
      

  2.   

    使用示例,把上面的js文件命名为:chen_ymd.js<script language="javascript" src="chen_ymd.js"></script>
     开始日期:      
    <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>
      

  3.   

    <SCRIPT LANGUAGE=javascript>
    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>
      

  4.   

    这是我用javascript写的:
    <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;
    }
      

  5.   


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