Resolución ejercicios fechas java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.TextStyle;
import java.util.Arrays;
import java.util.Locale;
import java.util.Scanner;
 
public class FechasHoras {
 
    public static void main(String[] args) {
 
        // La función esViernes me devuelve...
        for (LocalDate fecha : diasLaborablesArray(1, 11, 2023)) {
            System.out.println(fecha);
        }
        System.out.println(Arrays.toString(diasLaborablesArray(1, 11, 2023)));
    }
 
    public static boolean esViernes() {
        // Fecha de hoy
        LocalDate hoy = LocalDate.now();
        // Si hoy es viernes
        return hoy.getDayOfWeek() == DayOfWeek.FRIDAY;
    }
 
    public static int hastaelFinde() {
        // Fecha de hoy
        LocalDate hoy = LocalDate.now();
        // Cogemos el día numérico de la sema 1-lunes...7 domingo
        int dia = hoy.getDayOfWeek().getValue();
        // Si es sábado o domingo devolvemos 0
        if (dia >= 6) {
            return 0;
        } else {
            // Devolvemos 6 menos el valor
            return 6 - dia;
        }
 
    }
 
    public static int hastaelFindeNinja() {
 
        // Obtenemos el día numérico de la semana
        int dia = LocalDate.now().getDayOfWeek().getValue();
        // Operador ternario para devolver 0 o la resta de días como
        // En el ejemplo anterior
        // Operador ternario if comprimido
        // condicion ? valor si cierto : valor si falso
        return dia >= 6 ? 0 : 6 - dia;
    }
 
    public static LocalDate vencimiento(LocalDate fecha, int dias) {
        // Añado los días a la fecha
        return fecha.plusDays(dias);
    }
 
    public static String diaCumple(int mes, int dia) {
        // Creo la fecha de cumpleaños de este año
        LocalDate cumple = LocalDate.of(LocalDate.now().getYear(), mes, dia);
        // Obtengo el día de la semana en formato string
        return cumple.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.of("es", "es"));
    }
 
    public static String diaCumpleOtro(int mes, int dia) {
        LocalDate cumple = LocalDate.of(LocalDate.now().getYear(), mes, dia);
        // Lo mismo pero usando un formateador
        return cumple.format(DateTimeFormatter.ofPattern("EEEE"));
    }
 
    public static int numFestivos(int anyo, int mes) {
        // Pongo la fecha del dia uno de mes
        LocalDate fecha = LocalDate.of(anyo, mes, 1);
        // Defino un contador
        int festivos = 0;
        // Mientras sigamos en este mes
        while (fecha.getMonthValue() == mes) {
            // Comparo con sábado y domingo
            if (fecha.getDayOfWeek() == DayOfWeek.SATURDAY || fecha.getDayOfWeek() == DayOfWeek.SUNDAY) {
                festivos++;
            }
            // Sumo uno al día para recorrer todos los días del mes
            fecha = fecha.plusDays(1);
        }
        return festivos;
    }
 
    public static String diasLaborables(int dia, int mes, int anyo) {
        // Creo la fecha que me han pasado
        LocalDate fecha = LocalDate.of(anyo, mes, dia);
        // Aquí acumularé las fechas
        String resultado = "";
        // Contador días laborables
        int cont = 0;
        while (cont < 15) {
            // Si el día es laborable
            if (fecha.getDayOfWeek().getValue() < 6) {
                // Lo añado a la cadena
                resultado += fecha.toString() + " - ";
                // Sumo uno al contador
                cont++;
            }
            // Siempre sumo uno a la fecha
            fecha = fecha.plusDays(1);
        }
 
        return resultado;
    }
 
    public static LocalDate[] diasLaborablesArray(int dia, int mes, int anyo) {
        return diasLaborablesArray(dia,mes,anyo,15);
    }
    public static LocalDate[] diasLaborablesArray(int dia, int mes, int anyo, int numDias) {
        // Creo la fecha que me han pasado
        LocalDate fecha = LocalDate.of(anyo, mes, dia);
        // Aquí acumularé las fechas
 
        LocalDate[] resultado = new LocalDate[15];
        // Contador días laborables
        int cont = 0;
        while (cont < numDias) {
            // Si el día es laborable
            if (fecha.getDayOfWeek().getValue() < 6) {
                // Lo añado a la cadena
                resultado[cont] = fecha;
                // Sumo uno al contador
                cont++;
            }
            // Siempre sumo uno a la fecha
            fecha = fecha.plusDays(1);
        }
 
        return resultado;
    }
}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos