怎么计算出2个日期之间有多少工作日 怎么计算出2个日期之间有多少工作日?有什么算法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.cnblogs.com/l_dragon/archive/2005/08/23/221036.htmlC#版的可能对你有启发! 工作日?Oh,my god!两个日期之间有多少天可以知道,有多少个工作日.....这....在Calendar中有方法可以知道一个日期是星期几.然后算出两个日期之间的间隔天数,再按每周七天去做处理吧. 如果只要求算出周末的话,比较简单。public class testWorkTime { public static void main(String[] args) throws ParseException { //设置时间格式 DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); //开始日期 Date dateFrom = dateFormat.parse("2007/07/01"); //结束日期 Date dateTo = dateFormat.parse("2007/08/01"); //工作天数 int workdays = 0; while(dateFrom.before(dateTo)){ Calendar cal = Calendar.getInstance(); //设置日期 cal.setTime(dateFrom); if((cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) &&(cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)){ //进行比较 workdays++; } //日期加1 cal.add(Calendar.DAY_OF_MONTH,1); dateFrom = cal.getTime(); cal=null; } System.out.println("工作天数是:" + workdays); }} 周末+公休日package datespan;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Locale;import java.util.Date;import java.text.SimpleDateFormat;public class DateSpan { /** * 计算两个日期的工作日 * @param dtFrom 开始时间 * @param dtTo 结束时间 * @param holidayFrom 公休日开始时间 * @param holidayTo 公休日结束时间 * @return 工作日的天数 */ public static int getWorkDate(Date dtFrom,Date dtTo,Date holidayFrom,Date holidayTo) { if(dtFrom.after(dtTo)) { Date dt3=dtFrom; dtFrom=dtTo; dtTo=dt3; } int count=0; long returncount=((((dtTo.getTime()-dtFrom.getTime())/1000)/60)/60)/24; for(int i=0;i<returncount;i++) { Calendar cal=Calendar.getInstance(); cal.setTime(dtFrom); if(cal.get(Calendar.DAY_OF_WEEK)!=Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY) { if(holidayFrom.after(cal.getTime())||holidayTo.before(cal.getTime())) count++; } cal.add(Calendar.DAY_OF_MONTH, 1); dtFrom=cal.getTime(); cal=null; } return count; } /** * @param args */ public static void main(String[] args) { try { SimpleDateFormat format=new SimpleDateFormat("yy-MM-dd"); Date dt1=format.parse("2008-10-12"); Date dt2=format.parse("2008-12-12"); Date dt3=format.parse("2008-10-15"); Date dt4=format.parse("2008-10-20"); System.out.println(DateSpan.getWorkDate(dt1, dt2,dt3,dt4)); } catch(Exception e) { e.getMessage(); } }} 用java.io包创建了一个file目录,为啥在系统里搜索不到? 问一个有挑战性的SQL问题 想认识从事JAVA WEB 开发的女程序员 南京的最好 java中构造可以私有吗 struts-helloapp web.xml的错误 请高手指点 Jsp跟servlet有什么区别! java的类加载器路径 运行时出错啦!! Connection 是一个接口,生成的对象的方法没有实现,怎么可以用createStatement方法? list取值,object取值 这个用IDE怎么实现 两上LIST的值如何进行运算,返回另一个结果LIST
C#版的
可能对你有启发!
public class testWorkTime { public static void main(String[] args) throws ParseException {
//设置时间格式
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
//开始日期
Date dateFrom = dateFormat.parse("2007/07/01");
//结束日期
Date dateTo = dateFormat.parse("2007/08/01");
//工作天数
int workdays = 0; while(dateFrom.before(dateTo)){
Calendar cal = Calendar.getInstance();
//设置日期
cal.setTime(dateFrom);
if((cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY)
&&(cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)){
//进行比较
workdays++;
}
//日期加1
cal.add(Calendar.DAY_OF_MONTH,1);
dateFrom = cal.getTime();
cal=null;
}
System.out.println("工作天数是:" + workdays);
}
}
package datespan;import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.Date;
import java.text.SimpleDateFormat;public class DateSpan
{
/**
* 计算两个日期的工作日
* @param dtFrom 开始时间
* @param dtTo 结束时间
* @param holidayFrom 公休日开始时间
* @param holidayTo 公休日结束时间
* @return 工作日的天数
*/
public static int getWorkDate(Date dtFrom,Date dtTo,Date holidayFrom,Date holidayTo)
{
if(dtFrom.after(dtTo))
{
Date dt3=dtFrom;
dtFrom=dtTo;
dtTo=dt3;
}
int count=0;
long returncount=((((dtTo.getTime()-dtFrom.getTime())/1000)/60)/60)/24;
for(int i=0;i<returncount;i++)
{ Calendar cal=Calendar.getInstance();
cal.setTime(dtFrom);
if(cal.get(Calendar.DAY_OF_WEEK)!=Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY)
{
if(holidayFrom.after(cal.getTime())||holidayTo.before(cal.getTime()))
count++;
}
cal.add(Calendar.DAY_OF_MONTH, 1);
dtFrom=cal.getTime();
cal=null;
}
return count;
}
/**
* @param args
*/
public static void main(String[] args)
{
try
{
SimpleDateFormat format=new SimpleDateFormat("yy-MM-dd");
Date dt1=format.parse("2008-10-12");
Date dt2=format.parse("2008-12-12");
Date dt3=format.parse("2008-10-15");
Date dt4=format.parse("2008-10-20");
System.out.println(DateSpan.getWorkDate(dt1, dt2,dt3,dt4));
}
catch(Exception e)
{
e.getMessage();
}
}}