仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 553|回复: 11
打印 上一主题 下一主题

[学习教程] 发布一篇Java上钩算恣意两个日期之间的事情天数

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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这些工具的出来。
兰色精灵 该用户已被删除
沙发
发表于 2015-1-18 23:21:24 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
若相依 该用户已被删除
板凳
发表于 2015-1-23 23:57:09 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
若天明 该用户已被删除
地板
发表于 2015-1-31 20:50:31 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
简单生活 该用户已被删除
5#
发表于 2015-2-6 11:09:05 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
深爱那片海 该用户已被删除
6#
发表于 2015-2-7 15:39:54 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
柔情似水 该用户已被删除
7#
 楼主| 发表于 2015-2-22 11:32:22 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
山那边是海 该用户已被删除
8#
发表于 2015-2-28 21:15:03 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
因胸联盟 该用户已被删除
9#
发表于 2015-3-1 18:10:29 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
谁可相欹 该用户已被删除
10#
发表于 2015-3-7 08:12:45 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
飘灵儿 该用户已被删除
11#
发表于 2015-3-11 12:44:31 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
不帅 该用户已被删除
12#
发表于 2015-3-25 19:46:40 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表