Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
6
respuestas

CalendarioDiasTrabajados



public class DiaHabil {
    // Conjuntos de días festivos por país
    private static final Set<String> FESTIVOS_MEXICO = new HashSet<>();
    private static final Set<String> FESTIVOS_ARGENTINA = new HashSet<>();
    private static final Set<String> FESTIVOS_COLOMBIA = new HashSet<>();
    private static final Set<String> FESTIVOS_BRAZIL = new HashSet<>();
    private static final Set<String> FESTIVOS_PERU = new HashSet<>();
    private static final Set<String> FESTIVOS_BOLIVIA = new HashSet<>();
    private static final Set<String> FESTIVOS_CHILE = new HashSet<>();
    private static final Set<String> FESTIVOS_VENEZUELA = new HashSet<>();
    private static final Set<String> FESTIVOS_PARAGUAY = new HashSet<>();
    private static final Set<String> FESTIVOS_URUGUAY = new HashSet<>();
    private static final Set<String> FESTIVOS_GUYANA = new HashSet<>();
    private static final Set<String> FESTIVOS_PANAMA = new HashSet<>();

    static {
        // Festivos México 2025
        FESTIVOS_MEXICO.add("1-1");   // Año Nuevo
        FESTIVOS_MEXICO.add("2-3");   // Día de la Constitución
        FESTIVOS_MEXICO.add("3-17");  // Natalicio de Benito Juárez
        FESTIVOS_MEXICO.add("5-1");   // Día del Trabajo
        FESTIVOS_MEXICO.add("9-16");  // Día de la Independencia
        FESTIVOS_MEXICO.add("11-17"); // Revolución Mexicana
        FESTIVOS_MEXICO.add("12-25"); // Navidad

        // Festivos Argentina 2025
        FESTIVOS_ARGENTINA.add("1-1");   // Año Nuevo
        FESTIVOS_ARGENTINA.add("2-24");  // Carnaval
        FESTIVOS_ARGENTINA.add("2-25");  // Carnaval
        FESTIVOS_ARGENTINA.add("3-24");  // Día Nacional de la Memoria
        FESTIVOS_ARGENTINA.add("4-2");   // Día del Veterano
        FESTIVOS_ARGENTINA.add("5-1");   // Día del Trabajo
        FESTIVOS_ARGENTINA.add("5-25");  // Día de la Revolución de Mayo
        FESTIVOS_ARGENTINA.add("6-20");  // Día Paso a la Inmortalidad de Belgrano
        FESTIVOS_ARGENTINA.add("7-9");   // Día de la Independencia
        FESTIVOS_ARGENTINA.add("12-8");  // Inmaculada Concepción
        FESTIVOS_ARGENTINA.add("12-25"); // Navidad

        // Festivos Colombia 2025
        FESTIVOS_COLOMBIA.add("1-1");   // Año Nuevo
        FESTIVOS_COLOMBIA.add("1-6");   // Reyes Magos
        FESTIVOS_COLOMBIA.add("3-24");  // Día de San José
        FESTIVOS_COLOMBIA.add("4-14");  // Domingo de Ramos
        FESTIVOS_COLOMBIA.add("4-17");  // Jueves Santo
        FESTIVOS_COLOMBIA.add("4-18");  // Viernes Santo
        FESTIVOS_COLOMBIA.add("5-1");   // Día del Trabajo
        FESTIVOS_COLOMBIA.add("5-12");  // Día de la Madre
        FESTIVOS_COLOMBIA.add("6-2");   // Corpus Christi
        FESTIVOS_COLOMBIA.add("6-16");  // Sagrado Corazón
        FESTIVOS_COLOMBIA.add("6-30");  // San Pedro y San Pablo
        FESTIVOS_COLOMBIA.add("7-20");  // Día de la Independencia
        FESTIVOS_COLOMBIA.add("8-7");   // Batalla de Boyacá
        FESTIVOS_COLOMBIA.add("8-18");  // Asunción de la Virgen
        FESTIVOS_COLOMBIA.add("10-13"); // Día de la Raza
        FESTIVOS_COLOMBIA.add("11-3");  // Todos los Santos
        FESTIVOS_COLOMBIA.add("11-10"); // Independencia de Cartagena
        FESTIVOS_COLOMBIA.add("12-8");  // Inmaculada Concepción
        FESTIVOS_COLOMBIA.add("12-25"); // Navidad

6 respuestas
 // Festivos Brazil 2025
        FESTIVOS_BRAZIL.add("1-1");   // Ano Novo
        FESTIVOS_BRAZIL.add("2-24");  // Carnaval
        FESTIVOS_BRAZIL.add("2-25");  // Carnaval
        FESTIVOS_BRAZIL.add("4-18");  // Sexta-feira Santa
        FESTIVOS_BRAZIL.add("4-21");  // Tiradentes
        FESTIVOS_BRAZIL.add("5-1");   // Dia do Trabalho
        FESTIVOS_BRAZIL.add("6-19");  // Corpus Christi
        FESTIVOS_BRAZIL.add("9-7");   // Independência do Brasil
        FESTIVOS_BRAZIL.add("10-12"); // Nossa Senhora Aparecida
        FESTIVOS_BRAZIL.add("11-2");  // Finados
        FESTIVOS_BRAZIL.add("11-15"); // Proclamação da República
        FESTIVOS_BRAZIL.add("12-25"); // Natal

        // Festivos Perú 2025
        FESTIVOS_PERU.add("1-1");   // Año Nuevo
        FESTIVOS_PERU.add("4-17");  // Jueves Santo
        FESTIVOS_PERU.add("4-18");  // Viernes Santo
        FESTIVOS_PERU.add("5-1");   // Día del Trabajo
        FESTIVOS_PERU.add("6-29");  // San Pedro y San Pablo
        FESTIVOS_PERU.add("7-28");  // Día de la Independencia
        FESTIVOS_PERU.add("7-29");  // Día de la Independencia
        FESTIVOS_PERU.add("8-30");  // Santa Rosa de Lima
        FESTIVOS_PERU.add("10-8");  // Combate de Angamos
        FESTIVOS_PERU.add("11-1");  // Todos los Santos
        FESTIVOS_PERU.add("12-8");  // Inmaculada Concepción
        FESTIVOS_PERU.add("12-25"); // Navidad

        // Festivos Bolivia 2025
        FESTIVOS_BOLIVIA.add("1-1");   // Año Nuevo
        FESTIVOS_BOLIVIA.add("2-10");  // Carnaval
        FESTIVOS_BOLIVIA.add("2-11");  // Carnaval
        FESTIVOS_BOLIVIA.add("4-18");  // Viernes Santo
        FESTIVOS_BOLIVIA.add("5-1");   // Día del Trabajo
        FESTIVOS_BOLIVIA.add("6-21");  // Año Nuevo Andino
        FESTIVOS_BOLIVIA.add("8-6");   // Día de la Independencia
        FESTIVOS_BOLIVIA.add("11-2");  // Día de los Difuntos
        FESTIVOS_BOLIVIA.add("12-25"); // Navidad

        // Festivos Chile 2025
        FESTIVOS_CHILE.add("1-1");   // Año Nuevo
        FESTIVOS_CHILE.add("4-18");  // Viernes Santo
        FESTIVOS_CHILE.add("4-19");  // Sábado Santo
        FESTIVOS_CHILE.add("5-1");   // Día del Trabajo
        FESTIVOS_CHILE.add("5-21");  // Día de las Glorias Navales
        FESTIVOS_CHILE.add("6-29");  // San Pedro y San Pablo
        FESTIVOS_CHILE.add("7-16");  // Virgen del Carmen
        FESTIVOS_CHILE.add("8-15");  // Asunción de la Virgen
        FESTIVOS_CHILE.add("9-18");  // Fiestas Patrias
        FESTIVOS_CHILE.add("9-19");  // Día del Ejército
        FESTIVOS_CHILE.add("10-12"); // Encuentro de Dos Mundos
        FESTIVOS_CHILE.add("10-31"); // Día de las Iglesias Evangélicas
        FESTIVOS_CHILE.add("11-1");  // Todos los Santos
        FESTIVOS_CHILE.add("12-8");  // Inmaculada Concepción
        FESTIVOS_CHILE.add("12-25"); // Navidad

        // Festivos Venezuela 2025
        FESTIVOS_VENEZUELA.add("1-1");   // Año Nuevo
        FESTIVOS_VENEZUELA.add("2-24");  // Carnaval
        FESTIVOS_VENEZUELA.add("2-25");  // Carnaval
        FESTIVOS_VENEZUELA.add("4-17");  // Jueves Santo
        FESTIVOS_VENEZUELA.add("4-18");  // Viernes Santo
        FESTIVOS_VENEZUELA.add("4-19");  // Declaración Independencia
        FESTIVOS_VENEZUELA.add("5-1");   // Día del Trabajo
        FESTIVOS_VENEZUELA.add("6-24");  // Batalla de Carabobo
        FESTIVOS_VENEZUELA.add("7-5");   // Día de la Independencia
        FESTIVOS_VENEZUELA.add("7-24");  // Natalicio de Bolívar
        FESTIVOS_VENEZUELA.add("10-12"); // Día de la Resistencia Indígena
        FESTIVOS_VENEZUELA.add("12-25"); // Navidad

        // Festivos Paraguay 2025
        FESTIVOS_PARAGUAY.add("1-1");   // Año Nuevo
        FESTIVOS_PARAGUAY.add("3-1");   // Día de los Héroes
        FESTIVOS_PARAGUAY.add("4-17");  // Jueves Santo
        FESTIVOS_PARAGUAY.add("4-18");  // Viernes Santo
        FESTIVOS_PARAGUAY.add("5-1");   // Día del Trabajo
        FESTIVOS_PARAGUAY.add("5-15");  // Independencia
        FESTIVOS_PARAGUAY.add("6-12");  // Paz del Chaco
        FESTIVOS_PARAGUAY.add("8-15");  // Fundación de Asunción
        FESTIVOS_PARAGUAY.add("9-29");  // Batalla de Boquerón
        FESTIVOS_PARAGUAY.add("12-8");  // Virgen de Caacupé
        FESTIVOS_PARAGUAY.add("12-25"); // Navidad

        // Festivos Uruguay 2025
        FESTIVOS_URUGUAY.add("1-1");   // Año Nuevo
        FESTIVOS_URUGUAY.add("4-18");  // Viernes Santo
        FESTIVOS_URUGUAY.add("4-19");  // Día de la Independencia
        FESTIVOS_URUGUAY.add("5-1");   // Día del Trabajo
        FESTIVOS_URUGUAY.add("5-18");  // Batalla de Las Piedras
        FESTIVOS_URUGUAY.add("6-19");  // Natalicio de Artigas
        FESTIVOS_URUGUAY.add("7-18");  // Jura de la Constitución
        FESTIVOS_URUGUAY.add("8-25");  // Día de la Independencia
        FESTIVOS_URUGUAY.add("10-12"); // Día de la Raza
        FESTIVOS_URUGUAY.add("11-2");  // Día de los Difuntos
        FESTIVOS_URUGUAY.add("12-25"); // Navidad

        // Festivos Guyana 2025
        FESTIVOS_GUYANA.add("1-1");   // New Year's Day
        FESTIVOS_GUYANA.add("2-23");  // Republic Day
        FESTIVOS_GUYANA.add("5-5");   // Labour Day
        FESTIVOS_GUYANA.add("7-1");   // CARICOM Day
        FESTIVOS_GUYANA.add("8-4");   // Freedom Day
        FESTIVOS_GUYANA.add("11-10"); // Heritage Day
        FESTIVOS_GUYANA.add("12-25"); // Christmas Day
        FESTIVOS_GUYANA.add("12-26"); // Boxing Day

        // Festivos Panamá 2025
        FESTIVOS_PANAMA.add("1-1");   // Año Nuevo
        FESTIVOS_PANAMA.add("1-9");   // Día de los Mártires
        FESTIVOS_PANAMA.add("4-17");  // Jueves Santo
        FESTIVOS_PANAMA.add("4-18");  // Viernes Santo
        FESTIVOS_PANAMA.add("5-1");   // Día del Trabajo
        FESTIVOS_PANAMA.add("11-3");  // Separación de Colombia
        FESTIVOS_PANAMA.add("11-5");  // Día de Colón
        FESTIVOS_PANAMA.add("11-10"); // Primer Grito de Independencia
        FESTIVOS_PANAMA.add("12-25"); // Navidad
    }
  public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("CALENDARIO DE DÍAS HÁBILES 2025 - AMÉRICA LATINA");
        System.out.println("--------------------------------------------------");

        // Solicitar datos al usuario
        String diaSemana;
        do {
            System.out.print("Ingrese el día de la semana (en minúsculas, ej. lunes): ");
            diaSemana = scanner.nextLine().toLowerCase();

            if (!esDiaValido(diaSemana)) {
                System.out.println("Día no válido. Ingrese lunes, martes, miércoles, jueves, viernes, sábado o domingo.");
            }
        } while (!esDiaValido(diaSemana));

        int mes;
        do {
            System.out.print("Ingrese el mes (1-12): ");
            while (!scanner.hasNextInt()) {
                System.out.println("Por favor ingrese un número entre 1 y 12.");
                scanner.next();
            }
            mes = scanner.nextInt();
        } while (mes < 1 || mes > 12);

        int dia;
        do {
            System.out.print("Ingrese el día del mes (1-31): ");
            while (!scanner.hasNextInt()) {
                System.out.println("Por favor ingrese un número entre 1 y 31.");
                scanner.next();
            }
            dia = scanner.nextInt();
        } while (dia < 1 || dia > 31);

        scanner.nextLine(); // Limpiar buffer

        String pais;
        do {
            System.out.print("Ingrese el país (mexico, argentina, colombia, brazil, peru, bolivia, chile, venezuela, paraguay, uruguay, guayana, panama): ");
            pais = scanner.nextLine().toLowerCase();

            if (!esPaisValido(pais)) {
                System.out.println("País no registrado. Por favor ingrese uno de los países disponibles.");
            }
        } while (!esPaisValido(pais));

        // Verificar si es día hábil
        boolean esHabil = verificarDiaHabil(diaSemana, mes, dia, pais);

        // Mostrar resultado
        System.out.println("\n=== RESULTADO ===");
        System.out.println("Fecha: " + dia + "/" + mes + "/2025");
        System.out.println("País: " + capitalizar(pais));
        System.out.println("Día de la semana: " + capitalizar(diaSemana));

        if (diaSemana.equals("domingo")) {
            System.out.println("No es día hábil (es domingo)");
        } else if (!esHabil) {
            System.out.println("No es día hábil (es festivo)");
        } else {
            System.out.println("Es día hábil");
        }

        scanner.close();
    }
 private static boolean esDiaValido(String dia) {
        return dia.equals("lunes") || dia.equals("martes") || dia.equals("miércoles") ||
                dia.equals("jueves") || dia.equals("viernes") || dia.equals("sábado") ||
                dia.equals("domingo");
    }

    private static boolean esPaisValido(String pais) {
        return pais.equals("mexico") || pais.equals("argentina") || pais.equals("colombia") ||
                pais.equals("brazil") || pais.equals("peru") || pais.equals("bolivia") ||
                pais.equals("chile") || pais.equals("venezuela") || pais.equals("paraguay") ||
                pais.equals("uruguay") || pais.equals("guayana") || pais.equals("panama");
    }

    private static String capitalizar(String texto) {
        return texto.substring(0, 1).toUpperCase() + texto.substring(1);
    }

    private static boolean verificarDiaHabil(String diaSemana, int mes, int dia, String pais) {
        // Si es domingo, no es hábil
        if (diaSemana.equals("domingo")) {
            return false;
        }

        // Verificar si es festivo según el país
        String fecha = mes + "-" + dia;

        switch (pais) {
            case "mexico":
                return !FESTIVOS_MEXICO.contains(fecha);
            case "argentina":
                return !FESTIVOS_ARGENTINA.contains(fecha);
            case "colombia":
                return !FESTIVOS_COLOMBIA.contains(fecha);
            case "brazil":
                return !FESTIVOS_BRAZIL.contains(fecha);
            case "peru":
                return !FESTIVOS_PERU.contains(fecha);
            case "bolivia":
                return !FESTIVOS_BOLIVIA.contains(fecha);
            case "chile":
                return !FESTIVOS_CHILE.contains(fecha);
            case "venezuela":
                return !FESTIVOS_VENEZUELA.contains(fecha);
            case "paraguay":
                return !FESTIVOS_PARAGUAY.contains(fecha);
            case "uruguay":
                return !FESTIVOS_URUGUAY.contains(fecha);
            case "guayana":
                return !FESTIVOS_GUYANA.contains(fecha);
            case "panama":
                return !FESTIVOS_PANAMA.contains(fecha);
            default:
                return true;
        }
    }
}

Se aplico con paises de sur america de argentina a panama se incluyo mexico y mostrara adicional los dias festivos de cada pais indicara si es dia habil, para paises no incluidos mostrara un mensaje indicando que no se incluyo.

Hola John, espero que estés bien!

Felicidades por su actividad! Me pareció increíble la adaptación a los días festivos de cada país!

No veo puntos de mejora en términos de código así que solo te deseo éxito en los estudios y en tu carrera!

Saludos y buenos estudios!