<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>
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>
<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>
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>
比如
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
long kssj = format.parse(kssj).getTime();
如:string kssj='2005-1-1',string jssj='2005-12-31'
否则时间默认为一天开始的时刻00:00:002、只给同一月只是为了测试方便,否则输出太长了不便于检查
你可以传入任何合法的日期时间
t = new Date(Date.parse(s.replace(/-/g, '/')));
document.write(t.getTime());
输出
1133420313000
只能精确到毫秒我只能负责解答我的回复!
在我的代码中是按天加的
不是加一个月,而是调整显示值
getMonth()方法返回的月是从0算起的所以要加一
<!--
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);
}
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又是什么类型?
----------------------------------
谢谢了,不好意思,因为不懂,问了愚蠢的问题,那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 这个定义,就是说不管什么类型都是这个定义。
其实我想实现的功能就是在页面上选好两个日期时间,传到后台java里,然后把这两个日期之间的所有日期和对应星期几存到数据库的表里
传到后台,难道把中间所有的日期都以对象的形式传到后台吗?应该只传两个边界点,到后台用JAVA在分,JAVA中分也不难的
用GregorianCalendar这个类
后者直接用架构中sql中的循环
http://blog.csdn.net/hbhbhbhbhb1021/archive/2005/10/24/515189.aspx
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请帮我看看吧
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.
这个究竟怎么回事?该怎么改呢?是我哪里写错了吗?
注意javascript和java是两回事你应该到java技术版面去问你的问题,那里的解答要权威多了
java.lang.ArrayIndexOutOfBoundsException: 25
求大家帮帮忙,该怎么解决呢?是不是代码什么地方写错了?
楼主应该看看基础知识了,不过不要气馁,开始学的时候都这样。:)大家努力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));