发布一篇Java上钩算恣意两个日期之间的事情天数
市场分额,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);
returndayNames;
}
/**
*取得日期的下一个礼拜一的日期
*
*@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这些工具的出来。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
页:
[1]