Obtener día de la semana en Java

Día de la semana en Java

Día de la semana en Java


En este artículo vamos a ver como podemos obtener día de la semana en Java a partir de la versión 8 y con java.util.Date que ha sido usado en versiones anteriores de Java 8. Aunque lo más normal sería estar utilizando java.time.LocalDate, todavía hay mantenimiento de muchas aplicaciones con versiones antiguas de Java por lo que vamos a hacer un recorrido por estas dos formas de obtener el día de la semana con Java.

Obtener el día de la semana con java.util.Date

java.util.Date apareció ya hace unos cuantos años con la primera versión de Java. Para obtener el día de la semana podemos devolverlo como un número o en formato texto, vamos a ver ambas aproximaciones:

Para obtener el día de la semana como un número partiendo de una fecha con java.util.Date nos vamos a apoyar en java.util.Calendar:

public int dayofWeek(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    return calendar.get(Calendar.DAY_OF_WEEK);
}

Ahora vamos a devolver el día de la semana como un texto, es decir, Lunes o Monday, para ello también le pasaremos el Locale.

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

Obtener día de la semana con java.time.LocalDate

A partir de la versión de Java 8 se hizo mucho más cómodo y fácil el tratamiento de fechas gracias a java.time.LocalDate.

En este apartado vamos a ver lo rápido y sencillo que es obtener el día de la semana tanto de manera numérica como en texto.

La obtención del día de la semana como numérico se hace a través de un método que nos proporciona el API de java.time. El resultado es un valor entre 1 y 7, siendo el 1 el Lunes.

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

En cambio para obtener el día de la semana en texto podemos hacer lo siguiente:

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

DayOfWeek es una clase de java.time que nos proporciona un enum con los días de manera que podemos operar con esa clase para obtener el día en formato texto.

Conclusión

En este artículo hemos visto como podemos trabajar con Java para recuperar el día de la semana tanto en formato texto como en número, tanto para versiones de Java anteriores a la 8 como posteriores.

Otros artículos sobre fechas en Java que te pueden interesar:

Convertir string a LocalDate

Java Dates y Times después de Java 8

Si necesitas más información puedes escribirnos un comentario o un correo electrónico a refactorizando.web@gmail.com o también nos puedes contactar por nuestras redes sociales Facebook o twitter y te ayudaremos encantados!


Deja una respuesta

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