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; } } |