相关疑难解决方法(0)

计算Java中两个日期之间的工作日数

任何人都可以指向我的一些Java片段,其中我可以在两个日期之间获得业务(周六和周日除外).

java

47
推荐指数
6
解决办法
6万
查看次数

在没有星期六,星期日和公众假期的情况下计算java的工作日

我在oracle有一张桌子,我在墨西哥保存了十二个公共日,我需要计算自你注册后的限制日

public Date calcularFechaLimite() {
    try {
        DiaFestivoDTO dia = new DiaFestivoDTO();

        // Calendar fechaActual = Calendar.getInstance();
        Calendar fechaL = Calendar.getInstance();
        fechaL.add(Calendar.DATE, 3);

        switch (fechaL.get(Calendar.DAY_OF_WEEK)) {
        case Calendar.SATURDAY:
            fechaL.add(Calendar.DATE, 2);
            break;
        case Calendar.SUNDAY:
            fechaL.add(Calendar.DATE, 2);
            break;
        case Calendar.MONDAY:
            fechaL.add(Calendar.DATE, 2);
            break;
        case Calendar.TUESDAY:
            fechaL.add(Calendar.DATE, 1);
        default:
            break;
        }
        dia.setFechaLimite(fechaL.getTime());
        Integer numeroDiasFest = seleccionPagoBO.obtenerDiasFestivos(dia);
        if (numeroDiasFest != 0) {
            fechaL.add(Calendar.DATE, numeroDiasFest);
            dia.setFechaLimite(fechaL.getTime());
        }

        fechaLimite = fechaL.getTime();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return fechaLimite;

}
Run Code Online (Sandbox Code Playgroud)

这是我所拥有的,但3月28日和29日是公共日,它不工作,任何想法?

java

6
推荐指数
1
解决办法
2万
查看次数

计算两个日期之间的工作日数

我需要计算两个给定日期之间的工作日数
我将假期列表作为用户提供的数组列表。
因此,我可以调查日期之间的每一天,并检查它是否是工作日而不是联邦假日,如我在下面提供的代码(工作正常)

但这非常昂贵,假设有 12 个联邦假期,每天我都必须检查它不是周末,
所以如果我需要在 5 年之间计数,则需要 365 * 5 * 12 及其 21,000 次迭代!太疯狂了(甚至不包括工作日的计算)
有更好的方法吗?

package test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;

import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.time.DateUtils;

public class TestDiff {

    public static void main(String[] args) throws ParseException {
        DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
        // add 4 years as an example
        Date fromDate = formatter.parse("11/06/2017"),toDate = formatter.parse("11/29/2017");// DateUtils.addDays(fromDate,365 * 4);
        int numberOfDaysCount=0;
        int daysBetween  = daysBetween(fromDate,toDate);
        Date caurDate = fromDate;

        for(int …
Run Code Online (Sandbox Code Playgroud)

java date

3
推荐指数
1
解决办法
8352
查看次数

标签 统计

java ×3

date ×1