Le moyen le plus simple:
String[] namesOfDays = new String[7] {
"Sun", "MON", "TUE", "WED", "THU", "FRI", "SAT"
};
Cette méthode n'utilise pas Locale. Par conséquent, si la langue du système n'est pas l'anglais, cette méthode ne fonctionne pas correctement.
En utilisant le temps Joda, nous pouvons faire comme ceci:
String[] namesOfDays = new String[7];
LocalDate now = new LocalDate();
for (int i=0; i<7; i++) {
/* DateTimeConstants.MONDAY = 1, TUESDAY = 2, ..., SUNDAY = 7 */
namesOfDays[i] = now.withDayOfWeek((DateTimeConstants.SUNDAY + i - 1) % 7 + 1)
.dayOfWeek().getAsShortText();
}
Cependant, cette méthode utilise les calculs de date et de calendrier actuels, qui sont inutiles pour le but final. En outre, c'est un peu compliqué.
Existe-t-il un moyen simple d'obtenir des chaînes comme "Sun"
, "Mon"
, ..., "Sat"
avec les paramètres régionaux par défaut du système?
Si je ne vous ai pas mal compris
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);
est ce que vous recherchez. Ici vous pouvez trouver la documentation,
Ou vous pouvez également utiliser getShortWeekdays ()
String[] namesOfDays = DateFormatSymbols.getInstance().getShortWeekdays()
Date now = new Date();
// EEE gives short day names, EEEE would be full length.
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE", Locale.US);
String asWeek = dateFormat.format(now);
Vous pouvez créer la date avec la date et l'heure souhaitées. Et réalisez ce que vous voulez.
DayOfWeek.MONDAY.getDisplayName(
TextStyle.SHORT ,
Locale.getDefault()
)
Le projet Joda-Time , désormais en mode maintenance , conseille de migrer vers les classes Java.time . Une grande partie de Java.time est rétroportée sur Android (voir ci-dessous).
DayOfWeek
L'énumération DayOfWeek
définit sept objets, un pour chaque jour de la semaine. La classe propose plusieurs méthodes pratiques, dont getDisplayName
, pour générer une chaîne avec un nom de jour localisé.
Pour localiser, spécifiez:
TextStyle
pour déterminer la longueur ou l'abréviation de la chaîne.Locale
déterminer (a) la langue humaine pour la traduction du nom du jour, du nom du mois, etc., et (b) les normes culturelles déterminant les questions d'abréviation, de majuscule, de ponctuation, de séparateur, etc.Exemple:
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , Locale.CANADA_FRENCH );
Vous pouvez utiliser le fuseau horaire actuel par défaut de la machine virtuelle Java plutôt que d’en spécifier un. Mais gardez à l'esprit le risque: la zone par défaut peut être modifiée à tout moment pendant l'exécution par n'importe quel code de n'importe quel fil de n'importe quelle application s'exécutant dans la JVM.
Locale locale = Locale.getDefault() ;
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , locale );
Le cadre Java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes classes gênantes héritées _ date-heure telles que Java.util.Date
, Calendar
_, & SimpleDateFormat
.
Le projet Joda-Time , désormais en mode maintenance , conseille de migrer vers les classes Java.time .
Pour en savoir plus, consultez le Tutoriel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Où obtenir les classes Java.time?
Sans 1.8, vous pouvez utiliser DateFormatSymbols
(qui fonctionne également avec Android).
DateFormatSymbols.getWeekdays()
Retours: les chaînes du jour de la semaine. Utilisez Calendar.SUNDAY, Calendar.MONDAY, etc. pour indexer le tableau de résultats.