public String calculateDate(Date startDate,Date endDate,Map<Integer,String[]> sabbaticalLeave,Boolean includeOffDay,String[] workTime)要求是这样的,startDate是开始时间,endDate是结束时间,sabbaticalLeave中存放的是历年来的公休日信息,年份是key,当年节假日数组是value,节假日的格式类似这样{"1月1日","1月2日"....}。includeOffDay的意思是计算时是否排除休息日(周末和节假日),workTime是每天的工作时间,格式类似{"9:00-12:00","13:00-18:00"...}。
要求写一个方法计算出开始时间和结束时间之间的工作时长,返回一个类似这样的字符串"工作了xx天xx小时xx分xx秒"。

解决方案 »

  1.   

    网上有类似这方面的代码,LZ再好好找找修改一下就好了
    /** * * @author Yoi */import java.util.*;public class CalendarTest {        Calendar start = Calendar.getInstance();    Calendar end = Calendar.getInstance();    private int startYear;    private int startMonth;    private int startDay;    private int endYear;    private int endMonth;    private int endDay;        public void setStartDate(int startYear, int startMonth, int startDay){        this.startYear = startYear;        this.startMonth = startMonth - 1;   // 月份从0开始        this.startDay = startDay;        start.set(this.startYear, this.startMonth, this.startDay);    }        public void setEndDate(int endYear, int endMonth, int endDay){        ... ...    }        public boolean isWorkday(int year, int month, int day){        Calendar cal = Calendar.getInstance();        cal.set(year, month, day);                if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){            System.out.println("星期六休息");            return false;        }               else if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){            System.out.println("星期日休息");            return false;        }        else if(cal.get(Calendar.MONTH) == Calendar.MAY                 && cal.get(Calendar.DAY_OF_MONTH) < 8){            System.out.println("五一休息");            return false;        }        else if(cal.get(Calendar.MONTH) == Calendar.OCTOBER                 && cal.get(Calendar.DAY_OF_MONTH) < 8){            System.out.println("十一休息");            return false;        }        else            return true;    }        public void printWorkday(){        while(start.compareTo(end) <= 0){            if(this.isWorkday(start.get(Calendar.YEAR), start.get(Calendar.MONTH), start.get(Calendar.DAY_OF_MONTH)))                System.out.format("%tA %<tB %<td\n", start);            start.add(Calendar.DAY_OF_MONTH, 1);        }    }        public static void main(String[] args) {        CalendarTest ct = new CalendarTest();        ct.setStartDate(2007,5,1);        ct.setEndDate(2007,6,4);        ct.printWorkday();    }}
      

  2.   

    这种计算题都要别个帮你算。把CSDN的人都当计算机了啊?LX的计算机帮楼主解答吧