java 根据开始日期 ,需要的工作日天数 ,计算工作截止日期,并返回截止日期
2014-02-14 10:33
801 查看
我也参考过其他的方案,
提供一个代码简洁的方案,具体性能没有测试过,
经过测试,跨年也可以正确计算截止日期;
测试 夸年日期
输出结果
提供一个代码简洁的方案,具体性能没有测试过,
经过测试,跨年也可以正确计算截止日期;
/** * 根据开始日期 ,需要的工作日天数 ,计算工作截止日期,并返回截止日期 * @param startDate 开始日期 * @param workDay 工作日天数(周一到周五) * @return Date类型 * @createTime 2014-2-14 * @author Sunqinbo */ public static Date getWorkDay(Date startDate, int workDay, int hour, int second, int minute) { Calendar c1 = Calendar.getInstance(); c1.setTime(startDate); for (int i = 0; i < workDay; i++) { // 判断当天是否为周末,如果是周末加1 if (Calendar.SATURDAY == c1.get(Calendar.SATURDAY) || Calendar.SUNDAY == c1.get(Calendar.SUNDAY)) { workDay = workDay + 1; c1.set(Calendar.DATE, c1.get(Calendar.DATE) + 1); continue; } c1.set(Calendar.DATE, c1.get(Calendar.DATE) + 1); // 当天数加1 判断是否为周末 如果是周末加1 if (Calendar.SATURDAY == c1.get(Calendar.SATURDAY) || Calendar.SUNDAY == c1.get(Calendar.SUNDAY)) { workDay = workDay + 1; c1.set(Calendar.DATE, c1.get(Calendar.DATE) + 1); continue; } } // c1.set(Calendar.HOUR_OF_DAY, hour); // c1.set(Calendar.SECOND, second); // c1.set(Calendar.MINUTE, minute); // SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // System.out.println(df.format(c1.getTime()) + " " + getWeekOfDate(c1.getTime())); return c1.getTime(); } /** * 根据日期,获取星期几 * @param dt * @return String类型 * @createTime 2014-2-14 * @author Sunqinbo */ public static String getWeekOfDate(Date dt) { String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; Calendar cal = Calendar.getInstance(); cal.setTime(dt); int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return weekDays[w]; }
测试 夸年日期
public static void main(String[] args) throws ParseException { String source = "2014-12-30 10:45:06";// 开始时间 int workDay = 10;// 工作日 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.parse(source); for (int i = 0; i < workDay; i++) { System.out.print("工作日:" + i + "天, "); getWorkDay(df.parse(source), i); } }
输出结果
工作日:0天, 2014-12-30 10:45:06 星期二 工作日:1天, 2014-12-31 10:45:06 星期三 工作日:2天, 2015-01-01 10:45:06 星期四 工作日:3天, 2015-01-02 10:45:06 星期五 工作日:4天, 2015-01-05 10:45:06 星期一 工作日:5天, 2015-01-06 10:45:06 星期二 工作日:6天, 2015-01-07 10:45:06 星期三 工作日:7天, 2015-01-08 10:45:06 星期四 工作日:8天, 2015-01-09 10:45:06 星期五 工作日:9天, 2015-01-12 10:45:06 星期一
相关文章推荐
- java 毫秒转换成时,分,秒,毫秒 && 根据开始时间和天数,计算出几天后的时间
- java 中计算任意2个日期之间的工作天数
- java方法,返回两个日期内的所有date集合,根据开始时间、结束时间得到两个时间段内所有的日期
- SQL 计算两日期之间的工作天数和过滤工作日(周六、周日)
- java计算两个日期之前的天数(工作日),排除节假日和周末
- java 中计算任意2个日期之间的工作天数
- Java中计算任意两个日期之间的工作天数
- Java日期计算天数差需要注意的问题
- java根据两个日期计算每月的天数,并且除去周六日
- java根据当前日期+指定天数(月份...)得到相应日期,计算两日期之差
- java 传入参数(天数)返回工作日期(不包括周六日)
- java方法,返回两个日期内的所有date集合,根据开始时间、结束时间得到两个时间段内所有的日期
- java根据开始时间结束时间计算中间间隔日期
- java中计算任意2个日期之间的工作天数
- Java 中计算任意2个日期之间的工作天数
- 已知开始工作时间和工作日期计算工作日结束时间
- Java中计算任意两个日期之间的工作天数
- Java实现根据输入的日期以及天数,获取此日期之后的天数的工作日
- java根据两个日期计算每月的天数,并且除去周六日
- Java计算任意两个日期间隔的工作天数