<script language=javascript>
var kssj='2005-1-1';
var jssj='2005-1-31';
kssjArray=kssj.split("-");
var a=new Date(kssjArray[0],kssjArray[1]-parseInt(1),kssjArray[2]);
jssjArray=jssj.split("-");
var b=new Date(jssjArray[0],jssjArray[1]-parseInt(1),jssjArray[2]);
alert(b);
for(i=b;i>a;)
{ document.write(i.getYear()+"年"+(i.getMonth()+1)+"月"+i.getDate()+"日");
document.write("星期"+i.getDay()+"<br>");
i=new Date(i-86400000)

}

</script>

解决方案 »

  1.   

    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>New Page 1</title>
    </head><body>
    <script language=javascript>
    var kssj='2005-1-1';
    var jssj='2005-1-31';
    kssjArray=kssj.split("-");
    var a=new Date(kssjArray[0],kssjArray[1]-parseInt(1),kssjArray[2]);
    jssjArray=jssj.split("-");
    var b=new Date(jssjArray[0],jssjArray[1]-parseInt(1),jssjArray[2]);
    //alert(b);
    for(i=b;i>a;)
    { document.write(i.getYear()+"年"+(i.getMonth()+1)+"月"+i.getDate()+"日");
    switch (i.getDay()){
      case 0:
        xingqi="星期日";
        break;
      case 1:
        xingqi="星期一";
        break;
              case 2:
        xingqi="星期二";
        break;
              case 3:
        xingqi="星期三";
        break;
              case 4:
        xingqi="星期四";
        break;
              case 5:
        xingqi="星期五";
        break;
              case 6:
        xingqi="星期六";
        break;
        
    }
    document.write("星期"+xingqi+"<br>");
    i=new Date(i-86400000)

    }

    </script>
    </body></html>
      

  2.   

    <script>
    kssj='2005-12-1';
    jssj='2005-12-31';
    k = new Date(Date.parse(kssj.replace(/-/g, '/')));
    j = new Date(Date.parse(jssj.replace(/-/g, '/')));w = '日一二三四五六';
    while(k.getTime() < j.getTime()) {
      document.write(k.toLocaleString().replace(/(.+) .+/, '$1')+' 星期'+w.substr(k.getDay(),1)+'<br>');
      k.setDate(k.getDate()+1);
    }
    </script>
      

  3.   

    不是这个意思,就是转化成long型,
    比如
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    long kssj = format.parse(kssj).getTime();
      

  4.   

    还有你们写的都是同一月呀,我要的是一年的开始第一天到最后一天都显示出来呀
    如:string kssj='2005-1-1',string jssj='2005-12-31'
      

  5.   

    1、你要有时间的话就得传入时间yyyy-MM-dd h:i:s";
    否则时间默认为一天开始的时刻00:00:002、只给同一月只是为了测试方便,否则输出太长了不便于检查
    你可以传入任何合法的日期时间
      

  6.   

    还是不理解我要的效果呀,我就是要默认时间2005-1-1 00:00:00,我说的精确到秒不是这种意思,是指转化成long型显示,转成秒,如:2005-12-01 14:58:33转成秒就是1133420313062还有就是我任意输入两个日期都行是吗?可我看i.getYear()+"年"+(i.getMonth()+1)+"月"+i.getDate()+"日");不就是月加一吗?年日都没变呀,还有i=new Date(i-86400000)的86400000是什么意思呢拜托大家教教我吧,我对时间处理比较头大
      

  7.   

    s = '2005-12-01 14:58:33';
    t = new Date(Date.parse(s.replace(/-/g, '/')));
    document.write(t.getTime());
    输出
    1133420313000
    只能精确到毫秒我只能负责解答我的回复!
    在我的代码中是按天加的
      

  8.   

    (i.getMonth()+1)+"月"
    不是加一个月,而是调整显示值
    getMonth()方法返回的月是从0算起的所以要加一
      

  9.   

    谢谢了,不好意思,因为不懂,问了愚蠢的问题,那i是什么类型,如果是java.util.Date,怎么可以减86400000?如果是int,怎么可以把new java.util.Date付给它
      

  10.   

    <script language="JavaScript">
    <!--
    function PowerDate(){
    //日期对象
    this.date=null;
    //格式化时是否加零补位标志,默认为不加零false
    this.isFmtZero=false;
    this.weekArr=[["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],
      ["SUN","MON","TUR","WED","THU","FRI","SAT"]];
    this.monthArr=["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"];
    //初始化日期对象
    switch(arguments.length){
    case 0:
    this.date = new Date();
    break;
    case 1: 
    //如果为日期类型
    if(typeof(arguments[0]) == "object" && (/Date/.test(arguments[0].constructor))){
    this.date = arguments[0];
    }else{//字符串类型或者毫秒数
    var reg = /^(\d{2,4})\D+(\d{1,2})\D+(\d{1,2})$/;
    var str = arguments[0].replace(/\s/g,"");
    str = str.replace(reg,"$1/$2/$3");
    this.date = new Date(str);
    }
    break;
    case 2: //年月----此时初始化为年月的1号
    this.date = new Date(arguments[0],arguments[1]-1,1);
    break;
    case 3: //年月日
    this.date = new Date(arguments[0],arguments[1]-1,arguments[2]);
    break;
    case 6: //年月日时分秒
    this.date = new Date(arguments[0],arguments[1]-1,arguments[2],arguments[3],arguments[4],arguments[5]);
    break;
    case 7: //年月日时分秒毫秒
    this.date = new Date(arguments[0],arguments[1]-1,arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]);
    break;
    default: this.date = new Date("1970/1/1"); break;
    }
    //初始化失败处理
    if(typeof(this.date) != "object" || !(/Date/.test(this.date.constructor)))
    throw (new Error(-1, '构造PowerDate方法失败,检查输入参数!'));this.getDate = function (){
    return this.date;
    }
    this.getFullYear=function(){
    return this.date.getFullYear();
    };
    this.getYear=function(){
    return this.date.getYear();
    };
    this.getMonth=function(){
    return this.frmWithZero(this.date.getMonth()+1);
    };
    this.getDay=function(){
    return this.frmWithZero(this.date.getDate());
    };
    this.getHour=function(){
    return this.frmWithZero(this.date.getHours());
    };
    this.getMinute=function(){
    return this.frmWithZero(this.date.getMinutes());
    };
    this.getSecond=function(){
    return this.frmWithZero(this.date.getSeconds());
    };
    this.getMillisecond=function(){
    var ss=this.date.getMilliseconds();
    if(this.isFmtZero==true && ss<10)
    return "00"+ss;
    else if(this.isFmtZero==true && ss<100)
    return "0"+ss;
    else return ss;
    };
    this.getWeek=function(){
    return this.date.getDay();
    };
    this.setIsFmtZero=function(val){
    this.isFmtZero=val;
    };
    this.frmWithZero = function(num){
    if(this.isFmtZero==true && num<10)
    return "0"+num;
    else return num;
    }
    /*
     * 功能:根据输入表达式返回日期字符串
     * 参数:dateFmt:字符串,由以下结构组成    
     *      yy:长写年,YY:短写年mm:数字月,MM:英文月,dd:日,hh:时,
     *      mi:分,ss秒,ms:毫秒,we:汉字星期,WE:英文星期.
    */
    this.getString=function(dateFmt){
    if(typeof(dateFmt) != "string" )
    throw (new Error(-1, 'getString()方法需要字符串类型参数!'));
    var str=dateFmt;
    str=str.replace(/yy/g,this.getFullYear());
    str=str.replace(/YY/g,this.getYear());
    str=str.replace(/mm/g,this.getMonth());
    str=str.replace(/MM/g,this.monthArr[this.getMonth()-1]);
    str=str.replace(/dd/g,this.getDay());
    str=str.replace(/hh/g,this.getHour());
    str=str.replace(/mi/g,this.getMinute());
    str=str.replace(/ss/g,this.getSecond());
    str=str.replace(/ms/g,this.getMillisecond());
    str=str.replace(/we/g,this.weekArr[0][this.getWeek()]);
    str=str.replace(/WE/g,this.weekArr[1][this.getWeek()]);
    return str;
    };/* 功能 : 返回与某日期相距N天(N个24小时)的日期
     * 参数 : num number类型 可以为正负整数或者浮点数,默认为1;
     *        type 0(秒) or 1(天),默认为秒
     * 返回 : 新的PowerDate类型
     */
    this.dateAfter=function(num,type){
    num = (num == null?1:num);
    if(typeof(num)!="number") throw new Error(-1,"dateAfterDays(num)参数为数值类型.");
    var iType = (type==null?0:type);
    var arr = [1000,86400000];
    var dd = this.date.valueOf();
    dd += num*arr[type];
    this.date=new Date(dd);
    return this;
    };
    //判断是否是闰年,返回true 或者 false
    this.isLeapYear = function (){
    var year = this.getFullYear();
    return (0==year%4 && ((year % 100 != 0)||(year % 400 == 0)));
    };//返回该月天数
    this.getDaysOfMonth = function (){
    return (new Date(this.getFullYear(),this.getMonth(),0)).getDate();
    };//转换成大写日期(中文)
    this.getChinaDate =  function(){
    var year = this.getFullYear();
    var month= this.getMonth();
    var day = this.getDay();
    var arrNum = ["零","一","二","三","四","五","六","七","八","九","十","十一","十二"];
    var strTmp="";
    for(var i=0,j=year.length;i<j;i++){
    strTmp += arrNum[year.charAt(i)];
    }
    strTmp += "年";
    strTmp += arrNum[month]+"月";
    if(day<10)
    strTmp += arrNum[day];
    else if (day <20)
    strTmp += "十"+arrNum[day-10];
    else if (day <30 )
    strTmp += "二十"+arrNum[day-20];
    else 
    strTmp += "三十"+arrNum[day-30];
    strTmp += "日";
    return strTmp;
    };//日期比较函数,参数为pd类型如this日期晚于参数:1,相等:0 早于: -1
    this.dateCompare = function(pd){
    if(typeof(pd) != "object" || pd.toString() != "PowerDate")
     throw new Error(-1,"dateCompare(pd)的pd参数为PowerDate类型.");
    var d = this.date.getTime() - pd.getDate().getTime();
    return d>0?1:(d==0?0:-1);
    }
    /*功能:返回两日期之差
     *参数:pd   PowerDate对象
     *    type: 返回类别标识.yy:年,mm:月,ww:周,dd:日,hh:小时,mi:分,ss:秒,ms:毫秒
     *    intOrFloat :返回整型还是浮点型值 0:整型,不等于0:浮点型
     *    output : 输出提示,如:时间差为#周!
     */
    this.calDateDistance = function (pd,type,intOrFloat,output){
    if(typeof(pd) != "object" || pd.toString() != "PowerDate")
     throw new Error(-1,"calDateDistance(pd,type,intOrFloat)的pd参数为PowerDate类型.");
    if(!((new RegExp(type+",","g")).test("yy,mm,ww,dd,hh,mi,ss,ms,")))
     throw new Error(-1,"calDateDistance(pd,type,intOrFloat,output)的type参数为非法.");
    var iof = (intOrFloat==null?0:intOrFloat);
    var miSecMain = this.date.valueOf();
    var miSecSub  = pd.getDate().valueOf();
    var num=0;
    switch(type){
    case "yy": num = this.getFullYear() - pd.getFullYear(); break;
    case "mm": num = (this.getFullYear() - pd.getFullYear())*12+this.getMonth()-pd.getMonth(); break;
    case "ww": num = this.fmtRtnVal((miSecMain-miSecSub)/7/86400000,iof); break;
    case "dd": num = this.fmtRtnVal((miSecMain-miSecSub)/86400000,iof); break;
    case "hh": num = this.fmtRtnVal((miSecMain-miSecSub)/3600000,iof); break;
    case "mi": num = this.fmtRtnVal((miSecMain-miSecSub)/60000,iof); break;
    case "ss": num = this.fmtRtnVal((miSecMain-miSecSub)/1000,iof); break;
    case "ms": num = (miSecMain-miSecSub);break;
    default:  break;
    }
    if(output)
    return output.replace(/#/g,num);
    else return num;
    };
    //返回整数或者两位小数的浮点数
    this.fmtRtnVal = function (val,intOrFloat){
    //alert(val);
    return (intOrFloat == 0 ? Math.floor(val) : parseInt(val*100)/100);
    };
    //重载toString 方法,用来判断是否为PowerDate对象
    this.toString=function(){ return "PowerDate"};}var d= new PowerDate(new Date());//实例化一个PowerDate对象
    d.setIsFmtZero(true);//设置为用0补位输出
    //alert(d.getString("yy-mm-dd hh:mi:ss.ms"));
    //alert(d.getString("ms.ss:mi:hh dd-mm-yy"));
    alert(d.calDateDistance(new  PowerDate("2005/5/31"),"dd"));//输出日期字符串//-->
    </script> 新加的两个关于周数的方法
    //根据当前日期所在年和周数返回周日的日期
    Date.prototype.RtnByWeekNum = function (weekNum){
    if(typeof(weekNum) != "number")
    throw new Error(-1,"RtnByWeekNum(weekNum)的参数是数字类型.");
    var date = new Date(this.getFullYear(),0,1);
    var week = date.getDay();
    week = (week==0?7:week);
    return date.dateAfter(weekNum*7-week,1);
    }
    //根据日期返回该日期所在年的周数
    Date.prototype.getWeekNum = function (){
    var dat = new Date(this.getFullYear(),0,1);
    var week = dat.getDay();
    week = (week==0?7:week);
    var days = this.calDateDistance(dat,"dd")+1;
    return ((days + 6 - this.getDay() - 7 + week)/7);
    }
      

  11.   

    谢谢了,不好意思,因为不懂,问了愚蠢的问题,那i是什么类型,如果是java.util.Date,怎么可以减86400000?如果是int,怎么可以把new java.util.Date付给它还有kssjArray=kssj.split("-");
    var a=new Date(kssjArray[0],kssjArray[1]-parseInt(1),kssjArray[2]);
    jssjArray=jssj.split("-");
    var b=new Date(jssjArray[0],jssjArray[1]-parseInt(1),jssjArray[2]);
    kssjArray,jssjArray是string[]吗?a,b又是什么类型?
      

  12.   

    楼主求学的精神 很棒啊
    ----------------------------------
    谢谢了,不好意思,因为不懂,问了愚蠢的问题,那i是什么类型,如果是java.util.Date,怎么可以减86400000?如果是int,怎么可以把new java.util.Date付给它
    ------------------------------------------
    这个是Date,但是不是你说的java.util.Date,注意java和javascript一点关系都没有。
    86400000是1000*60*60*24得来的一天的毫秒数,当然可以减---------------------------------------------------------
    还有kssjArray=kssj.split("-");
    var a=new Date(kssjArray[0],kssjArray[1]-parseInt(1),kssjArray[2]);
    jssjArray=jssj.split("-");
    var b=new Date(jssjArray[0],jssjArray[1]-parseInt(1),jssjArray[2]);
    -------------------------------------------------------------------
    这里的也不是string[]类型
    是一个数组
    在JS中只有var 这个定义,就是说不管什么类型都是这个定义。
      

  13.   

    不好意思,主要是这段代码我要写到java里,所以有些东西必须写,不然它就不认识,编译时总报错
    其实我想实现的功能就是在页面上选好两个日期时间,传到后台java里,然后把这两个日期之间的所有日期和对应星期几存到数据库的表里
      

  14.   

    啊,那你的整个思路都错了
    传到后台,难道把中间所有的日期都以对象的形式传到后台吗?应该只传两个边界点,到后台用JAVA在分,JAVA中分也不难的
    用GregorianCalendar这个类
    后者直接用架构中sql中的循环
      

  15.   

    不是,就传选着的那两个日期到后台,也就是把string kssj='2005-1-1',string jssj='2005-12-31'传到后台,但后面该怎么做我就不会了,所以我问有这两个日期,怎么求中间的所有日期和对应星期几,拜托,我实在不会,帮帮我吧
      

  16.   

    你看下以前写的这个BLOG吧
    http://blog.csdn.net/hbhbhbhbhb1021/archive/2005/10/24/515189.aspx
      

  17.   

    我这样写的可以吗?不过还有错误,编译没通过呢,
          String xq=null;
          SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
          SimpleDateFormat df3 = new SimpleDateFormat("dd");
          long kssj = format.parse(kssj).getTime();
          long jssj = format.parse(jssj).getTime();
      for(long i=jssj;i>=kssj;)
      {
       String strDate = format.format(new java.util.Date(i));
       String dat = df3.format(new java.util.Date(i));
       int dayOfWeek = (new java.util.Date(strDate)).get(Calendar.DAY_OF_WEEK);
          if (dayOfWeek == 7)  xq="星期六";
          if (dayOfWeek == 1)  xq="星期日";
          if (dayOfWeek == 2)  xq="星期一";
          if (dayOfWeek == 3)  xq="星期二";
          if (dayOfWeek == 4)  xq="星期三";
          if (dayOfWeek == 5)  xq="星期四";
          if (dayOfWeek == 6)  xq="星期五";
    System.out.println(i);
    System.out.println(xq);
    System.out.println(dat);
          i=i-86400000;
      }
    错误为
    build:
        [javac] Compiling 1 source file to D:\src\classes
        [javac] D:\src\src\com\web\action\CalsInit.java:82: reference to
     Date is ambiguous, both class java.sql.Date in java.sql and class java.util.Dat
    e in java.util match
        [javac]             int dayOfWeek = (new Date(strDate)).get(Calendar.DAY_OF_
    WEEK);
        [javac]                                      ^
        [javac] D:\src\src\com\web\action\CalsInit.java:82: cannot resol
    ve symbol
        [javac] symbol  : constructor Date (java.lang.String)
        [javac] location: class java.sql.Date
        [javac]             int dayOfWeek = (new Date(strDate)).get(Calendar.DAY_OF_
    WEEK);
        [javac]                                  ^
        [javac] 2 errors请帮我看看吧
      

  18.   

    我又改了一下,改为如下:String xq=null;
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat df3 = new SimpleDateFormat("dd");
    long kssj = format.parse(kssj).getTime();
    long jssj = format.parse(jssj).getTime();
    for(long i=jssj;i>=kssj;)
      {
    String dat = df3.format(new java.util.Date(i));
    if (new java.util.Date(i).getDay() == 6)  xq="星期六";
    if (new java.util.Date(i).getDay() == 0)  xq="星期日";
    if (new java.util.Date(i).getDay() == 1)  xq="星期一";
    if (new java.util.Date(i).getDay() == 2)  xq="星期二";
    if (new java.util.Date(i).getDay() == 3)  xq="星期三";
    if (new java.util.Date(i).getDay() == 4)  xq="星期四";
    if (new java.util.Date(i).getDay() == 5)  xq="星期五";
    System.out.println(i);
    System.out.println(xq);
    System.out.println(dat);
    i=i-86400000;
      }
    现在的错误是
    build:
        [javac] Compiling 1 source file to D:\src\classes
        [javac] Note: D:\src\src\com\web\action\CalsInit.java uses or ov
    errides a deprecated API.
        [javac] Note: Recompile with -deprecation for details.
    这个究竟怎么回事?该怎么改呢?是我哪里写错了吗?
      

  19.   

    弄了半天原来你是要用java写啊!
    注意javascript和java是两回事你应该到java技术版面去问你的问题,那里的解答要权威多了
      

  20.   

    抛出异常如
    java.lang.ArrayIndexOutOfBoundsException: 25
    求大家帮帮忙,该怎么解决呢?是不是代码什么地方写错了?
      

  21.   

    你上面说的 “那怎么根据当前时间求出这个星期的星期一和星期日的日期,还有这个月的开始和最后一天的日期?”
    楼主应该看看基础知识了,不过不要气馁,开始学的时候都这样。:)大家努力String jssj="2005-12-12";
        String[] jssjArray=jssj.split("-");
        GregorianCalendar gc3=new GregorianCalendar(Integer.parseInt(jssjArray[0]),Integer.parseInt(jssjArray[1])-1,Integer.parseInt(jssjArray[2]));
    GregorianCalendar MonthBegin=new GregorianCalendar(Integer.parseInt(jssjArray[0]),Integer.parseInt(jssjArray[1])-1,1);
    GregorianCalendar MonthEnd=new GregorianCalendar(Integer.parseInt(jssjArray[0]),Integer.parseInt(jssjArray[1])-1,gc3.getMaximum(GregorianCalendar.DAY_OF_MONTH));
    GregorianCalendar WeekBegin;
    GregorianCalendar WeekEnd;
    if(gc3.get(GregorianCalendar.DAY_OF_WEEK)==1)
    {
    WeekBegin=new GregorianCalendar(Integer.parseInt(jssjArray[0]),Integer.parseInt(jssjArray[1])-1,(Integer.parseInt(jssjArray[2])-6));
    WeekEnd=gc3;
    }
    else
    {
    WeekBegin=new GregorianCalendar(Integer.parseInt(jssjArray[0]),Integer.parseInt(jssjArray[1])-1,(Integer.parseInt(jssjArray[2])-gc3.get(GregorianCalendar.DAY_OF_WEEK)+2));
    WeekEnd=new GregorianCalendar(Integer.parseInt(jssjArray[0]),Integer.parseInt(jssjArray[1])-1,(Integer.parseInt(jssjArray[2])-gc3.get(GregorianCalendar.DAY_OF_WEEK)+9));
    }

        System.out.println("本月开始日期"+MonthBegin.get(GregorianCalendar.YEAR)+"-"+(MonthBegin.get(GregorianCalendar.MONTH)+1)+"-"+MonthBegin.get(GregorianCalendar.DAY_OF_MONTH));
        System.out.println("本月结束日期"+MonthEnd.get(GregorianCalendar.YEAR)+"-"+(MonthEnd.get(GregorianCalendar.MONTH)+1)+"-"+MonthEnd.get(GregorianCalendar.DAY_OF_MONTH));
        System.out.println("本周开始日期"+WeekBegin.get(GregorianCalendar.YEAR)+"-"+(WeekBegin.get(GregorianCalendar.MONTH)+1)+"-"+WeekBegin.get(GregorianCalendar.DAY_OF_MONTH));
        System.out.println("本周结束日期"+WeekEnd.get(GregorianCalendar.YEAR)+"-"+(WeekEnd.get(GregorianCalendar.MONTH)+1)+"-"+WeekEnd.get(GregorianCalendar.DAY_OF_MONTH));