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