import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.commons.lang.time.DateUtils;
public class App {
static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd E");
/**
* 工作日计算类(工作日不包括周末和周六)
* @param startDate:开始日期
* @param addDay:需要增加的工作日数量
* @param today:是否包含今天
* @return java.util.Date
*/
public static java.util.Date addWorkdays(java.util.Date startDate, int addDay,boolean today) {
if(today){
addDay--;
}
int currentDayOfWeekInMonth = 1;
int jumpDay = 0;
int weekendCount = 0;
java.util.Calendar c = new java.util.GregorianCalendar();
c.setTime(startDate);
if(c.get(java.util.Calendar.DAY_OF_WEEK) == 1) {
jumpDay+=1;
currentDayOfWeekInMonth = 1;
}else if(c.get(java.util.Calendar.DAY_OF_WEEK) == 7) {
jumpDay += 2;
currentDayOfWeekInMonth = 1;
}else {
currentDayOfWeekInMonth = c.get(java.util.Calendar.DAY_OF_WEEK) - 1;
}
if(addDay <= (5 - currentDayOfWeekInMonth)) {
weekendCount = 0;
}else {
weekendCount = (addDay - ((5 - currentDayOfWeekInMonth) + 1))/5 + 1;
}
jumpDay += (addDay + weekendCount * 2);
c.add(java.util.Calendar.DAY_OF_MONTH, jumpDay);
return c.getTime();
}
/**
*
*/
public static void main(String[]a) throws ParseException{
int w=15;
java.util.Date nowDate=new SimpleDateFormat("yyyy-MM-01").parse("2014-02-01");
for(int i=0;i<29;i++){
java.util.Date date=DateUtils.addDays(nowDate, i);
java.util.Date _Date=addWorkdays(date,w,true);
System.out.println(simpleDateFormat.format(date)+" "+w+" 工作日后是 "+simpleDateFormat.format(_Date));
}
}
}
运行结果:
2014-02-01 星期六 15 工作日后是 2014-02-21 星期五
2014-02-02 星期日 15 工作日后是 2014-02-21 星期五
2014-02-03 星期一 15 工作日后是 2014-02-21 星期五
2014-02-04 星期二 15 工作日后是 2014-02-24 星期一
2014-02-05 星期三 15 工作日后是 2014-02-25 星期二
2014-02-06 星期四 15 工作日后是 2014-02-26 星期三
2014-02-07 星期五 15 工作日后是 2014-02-27 星期四
2014-02-08 星期六 15 工作日后是 2014-02-28 星期五
2014-02-09 星期日 15 工作日后是 2014-02-28 星期五
2014-02-10 星期一 15 工作日后是 2014-02-28 星期五
2014-02-11 星期二 15 工作日后是 2014-03-03 星期一
2014-02-12 星期三 15 工作日后是 2014-03-04 星期二
2014-02-13 星期四 15 工作日后是 2014-03-05 星期三
2014-02-14 星期五 15 工作日后是 2014-03-06 星期四
2014-02-15 星期六 15 工作日后是 2014-03-07 星期五
2014-02-16 星期日 15 工作日后是 2014-03-07 星期五
2014-02-17 星期一 15 工作日后是 2014-03-07 星期五
2014-02-18 星期二 15 工作日后是 2014-03-10 星期一
2014-02-19 星期三 15 工作日后是 2014-03-11 星期二
2014-02-20 星期四 15 工作日后是 2014-03-12 星期三
2014-02-21 星期五 15 工作日后是 2014-03-13 星期四
2014-02-22 星期六 15 工作日后是 2014-03-14 星期五
2014-02-23 星期日 15 工作日后是 2014-03-14 星期五
2014-02-24 星期一 15 工作日后是 2014-03-14 星期五
2014-02-25 星期二 15 工作日后是 2014-03-17 星期一
2014-02-26 星期三 15 工作日后是 2014-03-18 星期二
2014-02-27 星期四 15 工作日后是 2014-03-19 星期三
2014-02-28 星期五 15 工作日后是 2014-03-20 星期四
2014-03-01 星期六 15 工作日后是 2014-03-21 星期五
分享到:
相关推荐
在Java编程中,有时我们需要处理与日期相关的任务,例如判断某个日期是否是节假日,或者计算几个工作日后的新日期。这个工具类就是为了解决这样的问题而设计的。它包含了一个功能丰富的API,允许开发者轻松地进行...
离线计算方法可以是这样的:首先,遍历给定时间段内的所有日期,然后检查每个日期是否为工作日。对于周末,可以通过日期的星期几来判断,通常0代表周一,6代表周日。节假日的判断则需要查询预存的节假日列表。如果...
通过深入学习和实践这些例子,你将能够熟练掌握在Excel中进行工作日计算的方法,从而提高工作效率,处理各种与时间相关的业务问题。记得在实际应用中灵活运用这些函数,并根据需要自定义节假日列表,以满足特定场景...
它用于表示日期和时间,提供了丰富的属性和方法,如获取年、月、日、时、分、秒等信息,以及比较日期、加减日期时间、格式化输出等功能。在这个项目中,`DateTime`类将用于记录每个工作日、节假日和加班日期的具体...
标题所述的"C#实现工作...通过以上分析,我们可以构建一个功能完善的C#程序来计算两个日期之间的工作日总数,同时考虑到了节假日和周末的排除。这个功能在人力资源管理、项目计划或者数据分析等场景下都有广泛的应用。
加班工资的计算通常依据国家的劳动法规定,不同类型的加班(如平日加班、周末加班、法定节假日加班)有不同的计算标准。计算时需要参考员工的小时工资或日工资,并乘以相应的加班倍数。 年终奖金计算方法: 年终...
3. **工具类设计**:工具类通常包含一个静态方法,接受年份作为参数,然后根据定义的规则生成该年的节假日列表。这个列表可以是`List<LocalDate>`或其他支持日期操作的数据结构。 4. **节假日计算**:在工具类的...
Oracle数据库在处理日期运算时提供了丰富的函数和方法,使得对日期进行加减操作变得非常方便。在Oracle中,日期不仅可以与数字进行加减,还可以通过特定的函数进行复杂的日期计算。以下将详细介绍Oracle中关于日期加...
本文中,加减交替法除法器的设计充分利用了FPGA的并行计算能力和丰富的内部资源,如移位寄存器和加减法器,以实现高速的除法运算。 #### 设计亮点与优势 - **高性能**:通过FPGA实现的加减交替法除法器,能够在...
它们往往只支持基础的数学运算,如加减乘除,无法应对日益复杂的计算问题。然而,“一个集合多种计算方法的计算器”软件的出现彻底改变了这一局面。它不再局限于简单的数学运算,而是成为一个功能全面的计算平台,...
"get-working-days"可能是某个PHP库或函数,用于排除周末和法定节假日来获取两个日期间的工作日数量。下面我们将详细讨论如何在PHP中实现这个功能,以及相关的日期和时间处理技巧。 首先,我们需要了解PHP中的日期...
《星期日的安排(分数的加减混合运算)》这份教育资源,便是一个很好的尝试,通过将数学问题与学生的生活实际相结合,试图让学生在熟悉的生活场景中,体验和掌握分数加减混合运算的规则和策略。 首先,文档的设计者...
如果数据库中的`tb_workday`表包含了节假日信息,那么在计算工作日时,你需要查询表中对应日期的`date_type`,确保其为0(工作日)。如果`date_type`不为0,则需要跳过该日期。 总结来说,在ThinkPHP中获取指定日期...
然后,根据项目需求,配置工作周、工作时间以及节假日,并调用biz提供的方法进行时间计算。 在biz-master这个压缩包中,可能包含了biz库的源代码、示例、文档和测试用例。通过查看源码,你可以深入理解其内部实现...
有理数加减混合运算是数学中最基础也是应用最广泛的概念之一。...掌握有理数的加减混合运算能力,无疑能大大提高我们处理复杂问题的效率与准确性,为我们的日常生活和工作提供了数学上的强大支持。
在日常开发工作中,我们经常需要处理与日期相关的功能,例如计算两个日期之间的差值或者基于当前日期进行加减操作等。虽然 JavaScript 提供了内置的 `Date` 对象来处理日期,但有时它的功能并不足以满足我们的需求。...
"时间加减"这个主题涉及到从文本中提取日期信息,并进行日期的增加或减少操作。这通常在处理时间序列数据或者计算事件之间的时间间隔时非常有用。下面我们将详细探讨这个知识点。 首先,"取年月日文本"是指从文本...
掌握分式的加减运算,对于学生来说是必不可少的数学技能。 在具体学习分式的加减运算之前,我们首先要了解分式的基本概念。分式由分子和分母两部分组成,表示的是两个整数的比值。分式的性质、运算规则都是建立在这...
对于更复杂的日期操作,如计算工作日、闰年等,可能需要额外的逻辑或使用第三方库,如moment.js或date-fns等。这些库提供了更丰富的功能和易用的API,可以方便地处理日期的加减、格式化、比较等操作。 在实际开发中...
以上,我们不仅介绍了如何格式化、加减日期,还深入探讨了如何计算两个日期之间的具体差值,包括工作日和周末的数量。这些技能对于任何需要处理日期数据的JavaScript开发者来说,都是极其宝贵的工具箱。