web-dev-qa-db-fra.com

À partir du numéro de semaine, obtenez le nom du jour avec Joda Time

J'ai un jour de la semaine nombre: 2 (qui devrait correspondre au mardi si la semaine commence le lundi).

Y at-il un moyen d’obtenir le nom du jour en Java avec Joda Time? En javascript, il a été très facile de le faire avec moment.js:

moment().day(my number)
16
Odyssee

Joda-Time

Au moins, cela fonctionne, même si je considère que ce n’est pas très gentil:

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

Malheureusement, Joda-Time n’offre pas d’énumération pour le jour de la semaine (Java.time le fait). Je n'ai pas rapidement trouvé un autre moyen dans l'énorme api. Certains experts de Joda connaissent peut-être une meilleure solution.

Ajout (merci à @BasilBourque):

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

Java.time

Dans Java.time ( JSR 310 , Java 8 et versions ultérieures), utilisez la variable DayOfWeekenum .

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

Vous pouvez utiliser directement une instance enum particulière plutôt qu'un nombre magique comme 2. Le DayOfWeek enum fournit une instance pour chaque jour de la semaine, par exemple DayOfWeek.TUESDAY .

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

Vieux JDK

Pour le rendre complet, voici la solution de l'ancien JDK:

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

Tu peux le faire toi-même

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

Et cela ne nécessite même pas de bibliothèque :)

0
jjurm

En utilisant Joda, vous pouvez faire ceci:

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

Remplacez Locale par l’autre de vos paramètres régionaux. 

Devrait renvoyer un nom de jour de la semaine tel que Monday or Tuesday

0
M. Hig