// Son para crear fechas
// La fecha de hoy
LocalDate localDate = LocalDate.now();
System.out.println(localDate); // 2024-05-29
// Creo una fecha poniendo a mano los valores
LocalDate miFecha=LocalDate.of(2024, 6, 1);
System.out.println(miFecha);
// Creo una fecha intentando convertir una cadena
LocalDate otraFecha=LocalDate.parse("2024-06-17");
System.out.println(otraFecha);
// Puedo obtener información de mi fecha
// El mes en nombre o en número
System.out.println(miFecha.getMonth());
System.out.println(miFecha.getMonthValue());
// El año
System.out.println(miFecha.getYear());
// El día del mes
System.out.println(miFecha.getDayOfMonth());
// El día del año
System.out.println(miFecha.getDayOfYear());
// El día de la semana
System.out.println(miFecha.getDayOfWeek());
// El número del día de la semana (0 lunes 6 domingo)
System.out.println(miFecha.getDayOfWeek().ordinal());
// Si es año bisiesto
System.out.println(miFecha.isLeapYear());
// Días del mes
System.out.println(miFecha.lengthOfMonth());
// Días del año
System.out.println(miFecha.lengthOfYear());
// Formatear fechas
// Con el patrón que nosotros queramos
System.out.println(miFecha.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
// Formato del sistema operativo
// Largo, nombre del día y del mes
System.out.println(miFecha.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)));
// Corto, solo números
System.out.println(miFecha.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)));
// Operar con fechas
// Sumar un día
LocalDate manyana=LocalDate.now().plusDays(1);
System.out.println(manyana);
// SUmar meses
manyana=manyana.plusMonths(1);
// SUmar Años
manyana=manyana.plusYears(1);
// el 30 de junio del año que viene
System.out.println(manyana);
// Sumar una duración cualquiera
manyana=manyana.plus(1,ChronoUnit.WEEKS);
System.out.println(manyana);
manyana=manyana.plusYears(-1);
System.out.println(manyana);
manyana=manyana.minusYears(1);
System.out.println(manyana);