En Java, comment obtenir des chaînes de jours de la semaine (Sun, Mon, ..., Sat) avec les paramètres régionaux par défaut du système (langue)

Le moyen le plus simple:

String[] namesOfDays = new String[7] {
    "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"
};

Cette méthode n'utilise pas les paramètres régionaux. Par conséquent, si la langue du système n'est pas l'anglais, cette méthode ne fonctionne pas correctement.

En utilisant Joda time, 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 d'aujourd'hui, qui sont inutiles pour le but final. Aussi, c'est un peu compliqué.

Existe-t-il un moyen facile d'obtenir des chaînes comme "Sun", "Mon", ..., "Sat" avec les paramètres régionaux par défaut du système?

25
demandé sur Naetmul 2013-05-14 14:59:47

5 réponses

Si Je ne vous ai pas mal compris

 calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);

Est ce que vous cherchez. ici Vous pouvez trouver la documentation,

Ou vous pouvez aussi utiliser, getShortWeekdays()

String[] namesOfDays = DateFormatSymbols.getInstance().getShortWeekdays()
41
répondu Blackbelt 2015-04-08 10:50:54
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 de réaliser ce que vous voulez.

8
répondu Juned Ahsan 2013-05-14 11:10:03

Tl; dr

DayOfWeek.MONDAY.getDisplayName( 
    TextStyle.SHORT , 
    Locale.getDefault() 
)

Java.temps

Le projet Joda-Time , maintenant en mode de maintenance , conseille la migration vers le java .temps classes. Une grande partie de java.le temps est de retour-porté 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, y compris getDisplayName pour générer une chaîne avec un nom de jour localisé.

Pour localiser, spécifiez:

  • TextStyle pour déterminer combien de temps ou abrégé devrait être la chaîne.
  • Locale déterminer (a) le langage humain pour la traduction du nom du jour, du nom du mois et autres, et (b) les normes culturelles déterminant les questions d'abréviation, de Majuscule, de ponctuation, de séparateurs et autres.

Exemple:

String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , Locale.CANADA_FRENCH );

Vous pouvez utiliser le fuseau horaire par défaut actuel de la JVM plutôt que d'en spécifier un. Mais gardez à l'esprit le risque: le la zone par défaut peut être modifiée à tout moment pendant l'exécution par n'importe quel code dans n'importe quel thread de n'importe quelle application s'exécutant dans la JVM.

Locale locale = Locale.getDefault() ;
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.SHORT , locale );

À propos de java.temps

Le java.le framework time est intégré à Java 8 et versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date-heure classes telles que java.util.Date, Calendar, & SimpleDateFormat.

Le projetJoda-Time , maintenant enmode de maintenance , conseille migration vers le java .temps classes.

Pour en savoir plus, consultez le tutoriel Oracle. Et recherchez le débordement de pile pour de nombreux exemples et explications. La spécification est JSR 310 .

Où obtenir le java.les classes de temps?

3
répondu Basil Bourque 2017-05-23 12:34:21

Sans 1.8, vous pouvez utiliser DateFormatSymbols (qui travaille également avec Android).

DateFormatSymbols.getWeekdays()

Renvoie: les chaînes du jour de la semaine. Utilisation De L'Application Calendrier.DIMANCHE, de Calendrier.LUNDI, etc. pour indexer le tableau de résultats.

0
répondu yincrash 2018-07-10 05:12:23

Veuillez essayer ceci

public static String[] namesOfDays =  {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};


 int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);

System.out.println("Day := "+namesOfDays[day-1]);
-2
répondu Nitin Karale 2013-11-23 06:46:09