|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。
次要思绪:
关于恣意2个日期好比:date_start=2006-10-1、date_end=2006-10-14,起首盘算这连个日期之间的工夫距离(天数),然后分离对date_start和date_end获得它们下一个礼拜一的日期,如许就能够失掉一个新的能够整除7的完全日时代隔(这个新的日时代隔已把礼拜几的成绩剔出失落了),换一种说法就是我们能够失掉,这两个新的日期之间的周数,拿这个周数乘以5就是事情日期了(tmpWorkingDays)。可是这个日期并非我们所要的日期,接上去我们要做的就是盘算date_start,date_end这两个日期关于依据它们所发生的新的日期之间的工夫偏移量,date_start的偏移量(date_start_change)是必要加的,而date_end的这个偏移量(date_end_change)是必要减往的。最初我们只需用tmpWorkingDays+date_start_change-date_end_change就是我们所请求的实践事情日了。以下是一切完成代码(两个日期跨年也没有成绩)。
packagecom.date.utlit;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.GregorianCalendar;
/**
*盘算恣意2个日期内的事情日(没有思索到国定沐日)
*@authoruser
*
*/
publicclassDateCal{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
try{
StringstrDateStart="2006-10-1";
StringstrDateEnd="2006-10-14";
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
Datedate_start=sdf.parse(strDateStart);
Datedate_end=sdf.parse(strDateEnd);
DateCalapp=newDateCal();
Calendarcal_start=Calendar.getInstance();
Calendarcal_end=Calendar.getInstance();
cal_start.setTime(date_start);
cal_end.setTime(date_end);
System.out.println("礼拜-->"+app.getChineseWeek(cal_start)
+"日期-->"+cal_start.get(Calendar.YEAR)+"-"
+(cal_start.get(Calendar.MONTH)+1)+"-"
+cal_start.get(Calendar.DAY_OF_MONTH));
System.out.println("礼拜-->"+app.getChineseWeek(cal_end)+"日期-->"
+cal_end.get(Calendar.YEAR)+"-"
+(cal_end.get(Calendar.MONTH)+1)+"-"
+cal_end.get(Calendar.DAY_OF_MONTH));
System.out.println("事情日为-->"
+app.getWorkingDay(cal_start,cal_end));
System.out.println("歇息日-->"+app.getHolidays(cal_start,cal_end));
}catch(Exceptione){
//TODO:handleexception
}
}
publicintgetDaysBetween(java.util.Calendard1,java.util.Calendard2){
if(d1.after(d2)){//swapdatessothatd1isstartandd2isend
java.util.Calendarswap=d1;
d1=d2;
d2=swap;
}
intdays=d2.get(java.util.Calendar.DAY_OF_YEAR)
-d1.get(java.util.Calendar.DAY_OF_YEAR);
inty2=d2.get(java.util.Calendar.YEAR);
if(d1.get(java.util.Calendar.YEAR)!=y2){
d1=(java.util.Calendar)d1.clone();
do{
days+=d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR);
d1.add(java.util.Calendar.YEAR,1);
}while(d1.get(java.util.Calendar.YEAR)!=y2);
}
returndays;
}
/**
*盘算2个日期之间的相隔天数
*@paramd1
*@paramd2
*@return
*/
publicintgetWorkingDay(java.util.Calendard1,java.util.Calendard2){
intresult=-1;
if(d1.after(d2)){//swapdatessothatd1isstartandd2isend
java.util.Calendarswap=d1;
d1=d2;
d2=swap;
}
intbetweendays=getDaysBetween(d1,d2);
intcharge_date=0;
intcharge_start_date=0;//入手下手日期的日期偏移量
intcharge_end_date=0;//停止日期的日期偏移量
//日期不在统一个日期内
intstmp;
intetmp;
stmp=7-d1.get(Calendar.DAY_OF_WEEK);
etmp=7-d2.get(Calendar.DAY_OF_WEEK);
if(stmp!=0&&stmp!=6){//入手下手日期为礼拜六和日曜日时偏移量为0
charge_start_date=stmp-1;
}
if(etmp!=0&&etmp!=6){//停止日期为礼拜六和日曜日时偏移量为0
charge_end_date=etmp-1;
}
// }
result=(getDaysBetween(this.getNextMonday(d1),this.getNextMonday(d2))/7)
*5+charge_start_date-charge_end_date;
//System.out.println("charge_start_date>"+charge_start_date);
//System.out.println("charge_end_date>"+charge_end_date);
//System.out.println("betweendayis-->"+betweendays);
returnresult;
}
publicStringgetChineseWeek(Calendardate){
finalStringdayNames[]={"日曜日","礼拜一","礼拜二","礼拜三","木曜日","礼拜五",
"礼拜六"};
intdayOfWeek=date.get(Calendar.DAY_OF_WEEK);
//System.out.println(dayNames[dayOfWeek-1]);
returndayNames[dayOfWeek-1];
}
/**
*取得日期的下一个礼拜一的日期
*
*@paramdate
*@return
*/
publicCalendargetNextMonday(Calendardate){
Calendarresult=null;
result=date;
do{
result=(Calendar)result.clone();
result.add(Calendar.DATE,1);
}while(result.get(Calendar.DAY_OF_WEEK)!=2);
returnresult;
}
/**
*
*@paramd1
*@paramd2
*@return
*/
publicintgetHolidays(Calendard1,Calendard2){
returnthis.getDaysBetween(d1,d2)-this.getWorkingDay(d1,d2);
}
}
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。 |
|