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)