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开发者来说,都是极其宝贵的工具箱。
总结来说,JavaScript中的日期时间加减运算并不复杂,关键在于理解Date对象的工作原理以及如何利用其提供的方法来获取和设置日期时间的各个组成部分。通过拼接字符串,我们可以自定义日期时间的显示格式,以满足不同...
3. **比较与分析**:题目4让学生比较不同的计算方法,并判断哪种方法更简便,这是培养学生的逻辑思维和批判性思考的重要环节。 4. **综合提升**:这部分包含了一些进阶的问题,如第5题,需要学生将分数应用于实际...
例如,计算两个日期间的工作日数量、确定一个日期所在的季度或者判断某个特定的日期是否存在(如情人节)。这些操作在编写涉及日期的SQL查询时非常常见,并且有助于完成各种复杂的业务逻辑。 最后,文章还提到了在...
在实际开发过程中,日期加减是常见需求,比如计算某个日期后的第三个工作日是哪一天,或者某个日期的前几天是哪一天等。 在JavaScript中处理日期加减主要涉及`Date`对象的使用。`Date`对象提供了多个方法来获取和...