首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java兑现两个时间点的工作日

2012-12-26 
java实现两个时间点的工作日代码public static void main(String[] args) {try {System.out.println(check

java实现两个时间点的工作日

代码

public static void main(String[] args) {        try {            System.out.println(check(string2Date("2010-4-29"),string2Date("2011-6-4")));        } catch (Exception e) {            e.printStackTrace();        }    }    public static int check(Date beginDate, Date endDate) throws Exception {        Calendar cal = Calendar.getInstance();        cal.setTime(beginDate);        Integer beginYear = cal.get(Calendar.YEAR);        cal.setTime(endDate);        Integer endYear = cal.get(Calendar.YEAR);        if (beginYear == endYear) {            return betweenDaysInSameYear(beginDate, endDate);        } else {            int sumDays = 0;            for (Integer i = beginYear; i <= endYear; i++) {                if (i == beginYear) {                    sumDays += betweenDaysInSameYear(beginDate, string2Date(i.toString()+ "-12-31"));                } else if (i == endYear) {                    sumDays += betweenDaysInSameYear(string2Date(i.toString()+ "-1-1"), endDate);                } else {                    sumDays += betweenDaysInSameYear(string2Date(i.toString()+ "-1-1"), string2Date(i.toString() + "-12-31"));                }            }            return sumDays;        }    }    public static int betweenDaysInSameYear(Date beginDate, Date endDate) {        Calendar cal = Calendar.getInstance();        cal.setTime(beginDate);        int beginWeek = cal.get(Calendar.WEEK_OF_YEAR);        int beginDay = cal.get(Calendar.DAY_OF_WEEK);        cal.setTime(endDate);        int endWeek = cal.get(Calendar.WEEK_OF_YEAR);        int endDay = cal.get(Calendar.DAY_OF_WEEK);        int beginDays = 0;        int endDays = 0;        switch (beginDay) {        case Calendar.SATURDAY:            beginDays = 0;            break;        case Calendar.SUNDAY:            beginDays = 0;            break;        default:            beginDays = Calendar.FRIDAY - beginDay + 1;            break;        }        switch (endDay) {        case Calendar.SATURDAY:            endDays = 5;            break;        case Calendar.SUNDAY:            endDays = 5;            break;        default:            endDays = endDay - 1;            break;        }        return beginDays+ ((endWeek - beginWeek - 2) * 5 < 0 ? 0 : ((endWeek- beginWeek - 2) * 5)) + endDays;    }    public static Date string2Date(String dateStr) throws Exception {        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");        return fmt.parse(dateStr);    }

热点排行