111 votes

Comment puis-je obtenir le nom du mois dans le calendrier ?

Y a-t-il un oneliner pour obtenir le nom du mois quand on le connaît :

int monthNumber  = calendar.get(Calendar.MONTH)

Ou quel est le moyen le plus simple ?

17voto

Artjom Points 889
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );

Pour certaines langues (par exemple le russe), c'est la seule façon correcte d'obtenir les noms de mois autonomes.

C'est ce que vous obtenez, si vous utilisez getDisplayName de la Calendar o DateFormatSymbols pour le mois de janvier :

(ce qui est correct pour une chaîne de date complète : " 10 , 2014 ")

mais dans le cas d'un nom de mois autonome, on s'attendrait à ce qu'il y en ait un :

12voto

Rohit Jain Points 90368

Joda-Time

Que diriez-vous d'utiliser Joda-Time . Il s'agit d'une bien meilleure API de date et d'heure avec laquelle travailler. January signifie janvier ici. Ce n'est pas comme le calendrier, qui utilise 0-based pendant des mois).

Vous pouvez utiliser AbstractDateTime#toString( pattern ) pour formater la date dans le format spécifié :

DateTime date = DateTime.now();
String month = date.toString("MMM");

Mois Nom De Numéro

Si vous voulez un nom de mois pour un numéro de mois particulier, vous pouvez le faire comme suit :

int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");

Localisez

L'approche ci-dessus utilise le Locale par défaut de votre JVM pour la langue du nom du mois. Vous devez plutôt spécifier un objet Locale.

String month = date.toString( "MMM", Locale.CANADA_FRENCH );

11voto

Month::getDisplayName

Depuis Java 8, utilisez l'option Month enum. Le site getDisplayName localise automatiquement le nom du mois.

Passez :

  • A TextStyle pour déterminer la longueur ou l'abréviation.
  • A Locale pour spécifier le langage humain utilisé dans la traduction, ainsi que les normes culturelles utilisées pour les abréviations, la ponctuation, etc.

Ejemplo:

public static String getMonthStandaloneName(Month month) {
    return month.getDisplayName(
        TextStyle.FULL_STANDALONE, 
        Locale.getDefault()
    );
}

10voto

george racu Points 11

C'est peut-être une vieille question, mais pour obtenir le nom du mois quand on connaît les indices, j'ai utilisé

String month = new DateFormatSymbols().getMonths()[monthNumber - 1];

ou pour les noms courts

String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];

Veuillez noter que votre monthNumber commence à compter à partir de 1 alors que n'importe quelle méthode ci-dessus renvoie un tableau, vous devez donc commencer à compter à partir de 0.

4voto

Samet öztoprak Points 552

Ce code a un support linguistique. Je les avais utilisés dans une application Android.

String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,... 

String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X