Soluciones fechas

package com.trifulcas.fechas;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;

public class EjerciciosFechas {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		LocalDate cumple = LocalDate.of(2024, 8, 13);
		System.out.println(cumple.format(DateTimeFormatter.ofPattern("MM/d/yyyy")));
		System.out.println(cuantoFalta(cumple));
		System.out.println(Arrays.toString(primerosDeMes(2025)));
		System.out.println(esFinDeSemanaAnglo("06/01/2024"));
		System.out.println(esFinDeSemanaEsp("04/06/2024"));
	}

	// Crear una función cuantoFalta(fecha) a la que le pasamos una fecha
	// y nos devuelve cuantos días faltan hasta esa fecha
	static long cuantoFalta(LocalDate fecha) {
		return ChronoUnit.DAYS.between(LocalDate.now(), fecha);

	}

	// Crear una función primerosDeMes(anyo) que nos devuelva una array con las
	// fechas
	// de los primeros de mes de ese año (1 de enero, 1 de febrero, 1 de marzo...)

	// Devuelvo un array de fechas, le paso un int con el año
	static LocalDate[] primerosDeMes(int anyo) {
		// La sintaxis de un array es tipo nombre_variable= new tipo[tamaño]
		LocalDate[] fechas = new LocalDate[12]; // ¿Por qué 12? Porque son 12 meses

		// ¿Cómo creo yo un array con los primeros de mes?
		// (0) 1-1-2024, (1) 1-2-2024, (2) 1-3-2024...
		for (int i = 1; i <= 12; i++) {
			fechas[i - 1] = LocalDate.of(anyo, i, 1);
		}
		return fechas;
	}

	// Crear una función a la que le pasamos una cadena con una fecha en formato
	// "año-mes-dia" y nos devuelve true si es fin de semana y false en caso
	// contrario
	// esFinDeSemana(cadena)

	static boolean esFinDeSemanaEsp(String cadena) {
		// Convertir la cadena a fecha
		LocalDate fechaConvertida = LocalDate.parse(cadena, DateTimeFormatter.ofPattern("dd/MM/yyyy"));
		// Saber el día de la semana
		int diaSemana = fechaConvertida.getDayOfWeek().ordinal();
		// Si es sábado o domingo devolver true y si no false
		return diaSemana >= 5;

	}

	static boolean esFinDeSemanaAnglo(String cadena) {
		// Convertir la cadena a fecha
		LocalDate fechaConvertida = LocalDate.parse(cadena, DateTimeFormatter.ofPattern("MM/dd/yyyy"));
		// Saber el día de la semana
		int diaSemana = fechaConvertida.getDayOfWeek().ordinal();
		// Si es sábado o domingo devolver true y si no false
		return diaSemana >= 5;

	}

}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos