¿Existe un formato de fecha para mostrar el día de la semana en Java?

5 minutos de lectura

avatar de usuario
rogerstone

Conozco formatos de fecha como
"yyyy-mm-dd" -que muestra la fecha en formato 2011-02-26
"yyyy-MMM-dd"-que muestra la fecha en formato 2011-FEB-26

para ser utilizado en, por ejemplo:

SimpleDateFormat formatter = new SimpleDateFormat(
                "yyyy/MMM/dd ");

Quiero un formato que me ayude a mostrar el día de la semana como 2011-02-MON o algo. Solo quiero que el día de la semana se muestre en caracteres con el mes y el año. ¿Me puede hablar de un formato como este?

  • ¿Qué tal simplemente usar dd como formato?

    – Johan Sjoberg

    25/02/2011 a las 20:00

  • Estoy seguro de que los documentos API (descargar.oracle.com/javase/1.4.2/docs/api/java/text/…), estará encantado de proporcionarle una respuesta.

    – M.Jessup

    25 de febrero de 2011 a las 20:02

  • ¿Qué quieres decir con “día” – día de la semana, día del mes. En su ejemplo, se muestra la fecha completa. Muestra la entrada y la salida exactas que deseas.

    – Bozho

    25 de febrero de 2011 a las 20:03

  • Como consejo general, es mejor usar el - notación sólo con fechas en el formato ISO (es decir, año-mes-día). El guión se eligió allí porque no se usaba para ningún otro formato de fecha en ese momento, para evitar confusiones, y ahora todos usan su orden personalizado con el guión…

    – Paŭlo Ebermann

    25 de febrero de 2011 a las 20:17

avatar de usuario
nathan feger

Esto debería mostrar ‘Tue’:

new SimpleDateFormat("EEE").format(new Date());

Esto debería mostrar ‘Martes’:

new SimpleDateFormat("EEEE").format(new Date());

Esto debería mostrar ‘T’:

new SimpleDateFormat("EEEEE").format(new Date());

Así que tu ejemplo específico sería:

new SimpleDateFormat("yyyy-MM-EEE").format(new Date());

  • ¡Hermosa solución! Lo que estaba buscando era: lunes, 04/04/2016. Así que en mi caso, new SimpleDateFormat("EEEE, dd/MM/yyyy"); si ayuda a alguien en el futuro.

    – AuroMetal

    01/04/2016 a las 14:43

  • Bien, funciona. EEEE muestra los nombres completos del día de la semana, es decir, ‘lunes’, ‘martes’, etc.

    – kosiara – Bartosz Kosarzycki

    4 de junio de 2018 a las 9:05

  • Realmente no había considerado que este sitio existiera, y mucho menos que Java finalmente pudiera rescatar a Date. Técnicamente responde a la pregunta de los OP. Sin embargo, probablemente pueda agregar una nueva sección sobre cómo funciona el nuevo java.time.

    –Nathan Feger

    20 de junio de 2019 a las 21:28

Sí – ‘E’ hace el truco

http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

Date date = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-E");
System.out.println(df.format(date));

  • ver oráculo en la URL de los javadocs todavía se siente extraño.

    –Nathan Feger

    25 de febrero de 2011 a las 20:05

  • También usamos: DateFormat df = new SimpleDateFormat("yyyy-MM-EEEEEEE"); para mostrar DayOfWeek largo.

    –James Graham

    13 de junio de 2015 a las 10:37

avatar de usuario
usuario2824143

SimpleDateFormat sdf=new SimpleDateFormat("EEE");

EEE significa día de la semana, por ejemplo, el jueves se muestra como jueves.

avatar de usuario
albahaca bourque

tl; dr

LocalDate.of( 2018 , Month.JANUARY , 23 )
         .format( DateTimeFormatter.ofPattern( “uuuu-MM-EEE” , Locale.US )  )

java.tiempo

El enfoque moderno utiliza las clases java.time.

LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;

Observe cómo especificamos un Locale como Locale.CANADA_FRENCH para determinar el lenguaje humano utilizado para traducir el nombre del día.

DateTimeFormatter f = DateTimeFormatter.ofPattern( “uuuu-MM-EEE” , Locale.US ) ;
String output = ld.format( f ) ;

ISO 8601

Por cierto, te puede interesar el estándar. ISO 8601 semana esquema de numeración: yyyy-Www-d.

2018-W01-2

La semana # 1 tiene el primer jueves del año calendario. La semana comienza un lunes. Un año tiene 52 o 53 semanas. Los últimos/primeros días de un año calendario pueden caer en el siguiente/anterior año basado en la semana.

El único dígito al final es el día de la semana, 1-7 de lunes a domingo.

Añade el ThreeTen-Extra clase de biblioteca a su proyecto para el YearWeek clase.


Sobre java.tiempo

los java.tiempo framework está integrado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas legado clases de fecha y hora como java.util.Date, Calendar& SimpleDateFormat.

los Joda-Tiempo proyecto, ahora en modo de mantenimientoaconseja la migración a la java.tiempo clases

Para obtener más información, consulte la Tutorial de oráculo. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.

¿Dónde obtener las clases java.time?

  • Java SE 8, Java SE 9y después
    • Incorporado.
    • Parte de la API de Java estándar con una implementación integrada.
    • Java 9 agrega algunas características y correcciones menores.
  • Java SE 6 y Java SE 7
    • Gran parte de la funcionalidad de java.time está adaptada a Java 6 y 7 en ThreeTen-Backport.
  • Androide
    • Versiones posteriores de implementaciones de paquetes de Android de las clases java.time.
    • Para Android anterior, el TresDiezABP el proyecto se adapta ThreeTen-Backport (mencionado anteriormente). Ver Cómo usar ThreeTenABP….

los ThreeTen-Extra proyecto extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuartery más.

U ver”

Consulte la sección sobre Patrones de fecha y hora:

JavaDocs para SimpleDateFormat

avatar de usuario
Sal Borrelli

Sé que la pregunta es sobre obtener el día de la semana como una cadena (por ejemplo, el nombre corto), pero para cualquiera que esté buscando el día numérico de la semana (como yo), puede usar la nueva cadena de formato “u”, compatible desde Java 7. Por ejemplo:

new SimpleDateFormat("u").format(new Date());

devuelve el índice del día de la semana de hoy, a saber: 1 = lunes, 2 = martes, …, 7 = domingo.

¿Ha sido útil esta solución?