Java中的NETWORKDAYS.INTL
Excel有一个名为NETWORKDAYS.INTL的函数。它接收开始日期、结束日期、周末“类型”和假日列表,并计算两个日期之间的工作日数。周末的旗帜很重要,因为我可以把星期六当作工作日。更多信息请点击此处:Java中的NETWORKDAYS.INTL,java,Java,Excel有一个名为NETWORKDAYS.INTL的函数。它接收开始日期、结束日期、周末“类型”和假日列表,并计算两个日期之间的工作日数。周末的旗帜很重要,因为我可以把星期六当作工作日。更多信息请点击此处: Java中是否有类似NETWORKDAYS.INTL的东西?使用ObjectLab Kit、Joda和Jollyday,我可以保留我的国家假日,并检查这一天是星期六、星期天还是假日,但要像上面的函数一样计算,我需要每天迭代并检查是否有效。我没有发现任何东西,所以我只编写了自己的方法。在我
Java中是否有类似NETWORKDAYS.INTL的东西?使用ObjectLab Kit、Joda和Jollyday,我可以保留我的国家假日,并检查这一天是星期六、星期天还是假日,但要像上面的函数一样计算,我需要每天迭代并检查是否有效。我没有发现任何东西,所以我只编写了自己的方法。在我的应用程序中,所有日期都保存为时间戳
public boolean isHoliday(long date) {
return holidaysCalendar.isHoliday(new LocalDate(date));
}
public boolean isSaturday(long date) {
return (new LocalDate(date).dayOfWeek().get() == 7);
}
public boolean isSunday(long date) {
return (new LocalDate(date).dayOfWeek().get() == 1);
}
public boolean isValid(long date, boolean saturday, boolean sunday) {
boolean valid = true;
if (isHoliday(date)) {
valid = false;
} else {
if (!saturday && isSaturday(date)) {
valid = false;
}
if (!sunday && isSunday(date)) {
valid = false;
}
}
return valid;
}
public long addDays(long date, int days) {
return new LocalDate(date).plusDays(days).toDateTimeAtStartOfDay()
.getMillis();
}
public int validDaysBetweenDates(long date1, long date2,
boolean saturday, boolean sunday) {
date1 = addDias(date1, 1);
int cont = 0;
for (long dateTmp = date1; dataTmp <= date2; dataTmp = addDays(dataTmp, 1)) {
if (isValid(dataTmp, saturday, sunday))
cont++;
}
return cont;
}
公共假日(长日期){
返回holidaysCalendar.isHoliday(新的LocalDate(日期));
}
公众假期(长日期){
return(newlocaldate(date).dayOfWeek().get()=7);
}
公共发行日(长日期){
return(newlocaldate(date).dayOfWeek().get()=1);
}
公共布尔值有效(长日期、布尔值周六、布尔值周日){
布尔有效=真;
如果(isHoliday(日期)){
有效=错误;
}否则{
如果(!星期六和星期六(日期)){
有效=错误;
}
如果(!星期日和星期日(日期)){
有效=错误;
}
}
返回有效;
}
公共长添加天数(长日期,整数天){
返回新的LocalDate(date).plusDays(days).toDateTimeAtStartOfDay()
.getMillis();
}
public int validDaysBetweenDates(长日期1、长日期2、,
布尔周六、布尔周日){
date1=addDias(date1,1);
int cont=0;
对于(long dateTmp=date1;dataTmp),您可以通过使用DayOfWeek
enum而不仅仅是整数来简化此代码。myLocalDate.getDayOfWeek().equals(DayOfWeek.MONDAY)