Comment obtenir le nom du mois depuis le calendrier

Existe-t-il un oneliner pour obtenir le nom du mois lorsque nous connaissons int monthNumber = calendar.get(Calendar.MONTH) ? Ou quelle est la manière la plus facile?

Vous obtiendrez aussi cette voie.

  Ssortingng getMonthForInt(int num) { Ssortingng month = "wrong"; DateFormatSymbols dfs = new DateFormatSymbols(); Ssortingng[] months = dfs.getMonths(); if (num >= 0 && num < = 11 ) { month = months[num]; } return month; } 

vous pouvez y parvenir en utilisant SimpleDateFormat , qui est destiné à formater les dates et les heures.

 Calendar cal = Calendar.getInstance(); System.out.println(new SimpleDateFormat("MMM").format(cal.getTime())); 

Aussi simple que cela

 mCalendar = Calendar.getInstance(); Ssortingng month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault()); 

C’est la solution que j’ai trouvée pour un projet de classe:

 public static Ssortingng theMonth(int month){ Ssortingng[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; return monthNames[month]; } 

Le numéro que vous transmettez provient d’un appel Calendar.MONTH .

Si vous avez une interface multilingue, vous pouvez utiliser getDisplayName pour afficher le nom du mois avec le contrôle de la langue d’affichage.

Voici un exemple d’affichage du nom du mois en anglais, français, arabe et arabe dans un pays spécifique comme “Syrie”:

  Calendar c = Calendar.getInstance(); System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH ) ); System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.FRANCE ) ); System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar") ) ); System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar", "SY") ) ); System.out.println(c.getTime().toSsortingng()); 

le résultat est:

  January janvier يناير كانون الثاني Sat Jan 17 19:31:30 EET 2015 

Joda-Time

Pourquoi ne pas utiliser Joda-Time ? C’est une API de date-heure bien meilleure avec laquelle travailler (et January signifie janvier ici. Ce n’est pas comme Calendar, qui utilise l’index 0-based sur 0-based pendant des mois).

Vous pouvez utiliser la AbstractDateTime#toSsortingng( pattern ) pour formater la date au format spécifié:

 DateTime date = DateTime.now(); Ssortingng month = date.toSsortingng("MMM"); 

Nom du mois du numéro

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

 int month = 3; Ssortingng monthName = DateTime.now().withMonthOfYear(month).toSsortingng("MMM"); 

Localiser

L’approche ci-dessus utilise les parameters régionaux par défaut de votre machine virtuelle Java pour la langue du nom du mois. Vous souhaitez spécifier un object Locale à la place.

 Ssortingng month = date.toSsortingng( "MMM", Locale.CANADA_FRENCH ); 
 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.

Voici ce que vous obtenez si vous utilisez getDisplayName depuis Calendar ou DateFormatSymbols pour janvier:

января (ce qui est correct pour une chaîne de date complète: ” 10 janvier 2014 “)

mais dans le cas d’un nom de mois autonome, vous pouvez vous attendre à:

январь

Depuis Java 8:

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

C’est peut-être une vieille question, mais comme un seul paquebot pour obtenir le nom du mois où nous connaissons les indices, j’ai utilisé

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

ou pour les noms courts

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

Sachez que votre monthNumber commence à compter de 1 alors que toutes les méthodes ci-dessus renvoient un tableau. Vous devez donc commencer à compter à partir de 0.

Vous pouvez obtenir une ligne comme celle-ci: Ssortingng monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]

Cela fonctionne pour moi:

 Ssortingng getMonthName(int monthNumber) { Ssortingng[] months = new DateFormatSymbols().getMonths(); int n = monthNumber-1; return (n >= 0 && n < = 11) ? months[n] : "wrong number"; } 

Pour retourner "September" avec une ligne:

 Ssortingng month = getMonthName(9); 

Ce code prend en charge la langue. Je les avais utilisés dans Android App.

 Ssortingng[] months = new DateFormatSymbols().getShortMonths();//January,Februaty,March,... Ssortingng[] months = new DateFormatSymbols().getMonths();//Jan,Feb,Mar,... 
 DateFormat date = new SimpleDateFormat("dd/MMM/yyyy"); Date date1 = new Date(); System.out.println(date.format(date1)); 

Il renvoie le nom anglais du mois. 04 renvoie APRIL et ainsi de suite.

 Ssortingng englishMonth (int month){ return Month.of(month); } 

à partir du doc ​​java SimpleDateFormat:

 * "yyyyy.MMMMM.dd GGG hh:mm aaa" * 02001.July.04 AD 12:08 PM * "EEE, d MMM yyyy HH:mm:ss Z" * Wed, 4 Jul 2001 12:08:56 -0700