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