joda examples current java jodatime

java - examples - Desde el día de la semana número obtener el nombre del día con Joda Time



jodatime current time (3)

Tiempo de joda

Al menos esto funciona, aunque lo considero no tan agradable:

LocalDate date = new LocalDate(); date = date.withDayOfWeek(2); System.out.println(DateTimeFormat.forPattern("EEEE").print(date));

Desafortunadamente, Joda-Time no ofrece una enumeración para el día de la semana (java.time lo hace). No he encontrado rápidamente otra manera en la gran API. Tal vez algunos expertos en Joda saben una mejor solución.

Añadido (gracias a @BasilBourque):

LocalDate date = new LocalDate(); date = date.withDayOfWeek(2); System.out.println(date.dayOfWeek().getAsText());

java.time

En java.time ( JSR 310 , Java 8 y posteriores), use la enum DayOfWeek .

int day = 2; System.out.println( DayOfWeek.of(2).getDisplayName(TextStyle.FULL, Locale.ENGLISH) ); // Output: Tuesday

Puede usar una instancia de enumeración particular directamente en lugar de un número mágico como 2 . La enumeración de DayOfWeek proporciona una instancia para cada día de la semana, como DayOfWeek.TUESDAY .

System.out.println( DayOfWeek.TUESDAY.getDisplayName(TextStyle.FULL, Locale.ENGLISH) ); // Output: Tuesday

Viejo JDK

Para hacerlo completo, aquí la solución del antiguo JDK:

int day = 2; DateFormatSymbols dfs = DateFormatSymbols.getInstance(Locale.ENGLISH); System.out.println(dfs.getWeekdays()[day % 7 + 1]);

Tengo un número de día de la semana : 2 (que debe coincidir con el martes si la semana comienza el lunes).

De este número, ¿hay una manera de obtener el nombre del día en Java utilizando Joda Time? En javascript ha sido bastante fácil hacerlo usando moment.js:

moment().day(my number)


Puedes hacerlo por ti mismo

String[] dayNames = new String[]{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; String name = dayNames[day-1];

Y esto incluso no requiere ninguna biblioteca :)


Usando Joda puedes hacer esto:

DateTime curTime = new DateTime(); curTime.dayOfWeek().getAsText(Locale.ENGLISH);

Reemplace Locale con lo que sea su Locale.

Debe devolver un nombre de día de la semana como Monday or Tuesday