Saltar al contenido

Java Obtenga todos los días hábiles en un año en formato AAAAMMDD

No dejes de divulgar nuestra página y códigos en tus redes sociales, necesitamos de tu ayuda para ampliar nuestra comunidad.

Solución:

Ya que es 2020, realmente deberías estar abrazando el java.time.* API.

Si bien estoy seguro de que probablemente haya una manera muy buena de obtener los días “laborales” entre fechas, he optado por el método de fuerza bruta …

LocalDate ld = LocalDate.of(2020, Month.JANUARY, 1);
LocalDate endDate = ld.plusYears(1);

// You don't "have" to put into a list, but I like to seperate my
// code responsbilities ;)
List workDays = new ArrayList<>(365);
System.out.println(endDate);
while (ld.isBefore(endDate)) 

Entonces puedes simplemente usar un DateTimeFormatter para formatear el LocalDate en el formato que desee, por ejemplo…

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMdd");
List formats = workDays.stream().map(value -> value.format(format)).collect(Collectors.toList());

for (String value : formats) 
    System.out.println(value);

    Set weekend = EnumSet.of(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY);
    LocalDate.of(2019, Month.JANUARY, 1)
             .datesUntil(LocalDate.of(2020, Month.DECEMBER, 31), Period.ofDays(1))
             .filter(x -> !weekend.contains(x.getDayOfWeek()))
             .forEachOrdered(System.out::println);

Una manera lúcida de mostrar todo días laborables en un rango de fechas usando Java 8 y la API de fecha y hora moderna es la siguiente:

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main 
    public static void main(String[] args) 
        List dates = getDates("2019-01-01", "2019-12-31");
        for (LocalDate date : dates) 
            System.out.println(DateTimeFormatter.BASIC_ISO_DATE.format(date));
        
    

    public static List getDates(String fromDate, String toDate)  d.getDayOfWeek() == DayOfWeek.SUNDAY))
                .collect(Collectors.toList());
    

Producción:

20190101
20190102
20190103
20190104
20190107
20190108
...
...
...
20191226
20191227
20191230
20191231

Aquí puedes ver las reseñas y valoraciones de los lectores

Nos puedes avalar nuestra investigación escribiendo un comentario y valorándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *