¿Cómo determinar el día de la semana pasando una fecha específica en Java?

1. Información general

En este breve tutorial, veremos cómo extraer el día de la semana como un número y como texto de una fecha de Java.

2. Problema

La lógica empresarial a menudo necesita el día de la semana. ¿Por qué? Por un lado, las horas de trabajo y los niveles de servicio difieren entre los días laborables y los fines de semana. Por lo tanto, obtener el día como un número es necesario para muchos sistemas. Pero también es posible que necesitemos el día como texto para mostrar.

Entonces, ¿cómo extraemos el día de la semana de las fechas en Java?

3. Solución con java.util.Date

java.util.Date ha sido la clase de fecha de Java desde Java 1.0. El código que comenzó con la versión 7 de Java o una versión anterior probablemente use esta clase.

3.1. Día de la semana como número

Primero, extraemos el día como un número usando java.util.Calendar :

public static int getDayNumberOld(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.DAY_OF_WEEK); }

El número resultante varía de 1 (domingo) a 7 (sábado) . Calendar define las constantes para esto: Calendar.SUNDAY - Calendar.SATURDAY .

3.2. Día de la semana como texto

Ahora extraemos el día como texto . Pasamos un Locale para determinar el idioma:

public static String getDayStringOld(Date date, Locale locale) { DateFormat formatter = new SimpleDateFormat("EEEE", locale); return formatter.format(date); }

Esto devuelve el día completo en su idioma , como "Lunes" en inglés o "Montag" en alemán.

4. Solución con java.time.LocalDate

Java 8 revisó el manejo de fecha y hora e introdujo java.time.LocalDate para las fechas. Por lo tanto, los proyectos Java que solo se ejecutan en la versión 8 de Java o superior deben usar esta clase.

4.1. Día de la semana como número

Extraer el día como un número es trivial ahora:

public static int getDayNumberNew(LocalDate date) { DayOfWeek day = date.getDayOfWeek(); return day.getValue(); }

El número resultante todavía va de 1 a 7. ¡Pero esta vez, el lunes es 1 y el domingo es 7 ! El día de la semana tiene su propia enumeración : DayOfWeek . Como se esperaba, los valores de enumeración son LUNES - DOMINGO .

4.2. Día de la semana como texto

Ahora extraemos el día como texto nuevamente. También pasamos en un Locale :

public static String getDayStringNew(LocalDate date, Locale locale) { DayOfWeek day = date.getDayOfWeek(); return day.getDisplayName(TextStyle.FULL, locale); }

Al igual que con java.util.Date , devuelve el día completo en el idioma elegido.

5. Conclusión

En este artículo, extrajimos el día de la semana de las fechas de Java. Vimos cómo devolver tanto un número como un texto usando java.util.Date y java.time.LocalDate .

Como siempre, el código está disponible en GitHub.