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秒"。
解决方案 »
- Swing 组件根据屏幕的分辨率不同自动调节内部组件
- 用过JAI的朋友请进
- 可更新的结果集ResultSet删除行问题
- 再发:用java的applet调用delphi封装第三方动态库函数的exe文件出错,急!!!!!分不够再加
- 拆分ArrayList的问题?
- 天大发现!!!JDK 中提供的工具有问题!!!!!!!!!
- 请教关于synchronized的问题
- jar and for and run and init
- 一个初学者的简单问题!
- 请教javaSE中Jtable中加入jcombobox并设置可编辑,不按enter键无法保存当前值的原因?
- java rmi 是用来解决什么矛盾的?
- 帮朋友问,这个数组是几维几维几维的?
/** * * @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(); }}