web-dev-qa-db-fra.com

Comment obtenir le nom du mois à partir du calendrier

Existe-t-il un one-line pour obtenir le nom du mois où nous connaissons int monthNumber = calendar.get(Calendar.MONTH)? Ou quel est le moyen le plus simple?

81
ogzd

Vous obtiendrez ce chemin aussi.

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

vous pouvez y parvenir avec SimpleDateFormat, qui est destiné à formater la date et l'heure. 

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

Aussi simple que cela

mCalendar = Calendar.getInstance();    
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
64
sandalone

Voici la solution que j'ai proposée pour un projet de classe:

public static String theMonth(int month){
    String[] 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.

40
Terry Chern

si vous avez une interface multilingue, vous pouvez utiliser getDisplayName pour afficher le nom du mois avec le contrôle de l'affichage de la langue.

voici un exemple d’affichage du nom du mois en anglais, français, arabe et arabe dans des pays spécifiques tels que "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().toString());

le résultat est:

  January
  janvier
  يناير
  كانون الثاني
  Sat Jan 17 19:31:30 EET 2015
32
Eng. Samer T
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );

Pour certaines langues (par exemple, le russe), il s'agit du seul moyen correct d'obtenir les noms de mois autonomes.

Voici ce que vous obtenez si vous utilisez getDisplayName à partir de Calendar ou DateFormatSymbols pour janvier:

января (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:

январь

12
artkoenig

Joda-Time

Que diriez-vous d'utiliser Joda-Time . C’est une bien meilleure API avec laquelle travailler (et January signifie janvier ici. Ce n’est pas comme Calendar, qui utilise 0-based index pour les mois). 

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

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

Nom du mois à partir 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;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");

Localiser

L’approche ci-dessus utilise les paramètres régionaux par défaut de votre machine virtuelle Java pour la langue du nom du mois. Vous souhaitez plutôt spécifier un objet Locale.

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

Month::getDisplayName

Depuis Java 8, utilisez la variable Month enum. La méthode getDisplayName localise automatiquement le nom du mois. 

Passer:

  • A TextStyle pour déterminer combien de temps ou comment est abrégé.
  • A Locale pour spécifier la langue humaine utilisée dans la traduction et les normes culturelles utilisées pour les abréviations, la ponctuation, etc.

Exemple:

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

C’est peut-être une vieille question, mais en tant que ligne unique pour obtenir le nom du mois lorsque nous connaissons les indices, j’ai utilisé

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

ou pour les noms abrégés

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

Sachez que votre monthNumber commence à compter à partir de 1 alors que l’une des méthodes ci-dessus renvoie un tableau, vous devez donc commencer à compter à partir de 0.

7
georger

Ce code est pris en charge par les langues… .. Je les avais utilisées dans l'application Android.

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

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

Cela fonctionne pour moi:

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

Pour renvoyer "September" avec une ligne:

String month = getMonthName(9);
2
jhpg

Vous pouvez l'obtenir une ligne comme ceci: String monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]

2
Whirvis

Une manière:

Nous avons l'API Month en Java (Java.time.Month). Nous pouvons obtenir en utilisant Month.of(month);

Ici, les Month sont indexés sous forme de nombres afin que vous puissiez fournir par Month.JANUARY ou fournir un index dans l'API ci-dessus, tel que 1, 2, 3, 4. 

Deuxième voie:

ZonedDateTime.now().getMonth();

Ceci est disponible dans Java.time.ZonedDateTime.

1
kushal baldev

J'ai créé une extension kotlin en fonction des réponses fournies dans cette rubrique. À l'aide des réponses DateFormatSymbols, vous obtenez une réponse localisée.

fun Date.toCalendar(): Calendar {
    val calendar = Calendar.getInstance()
    calendar.time = this
    return calendar
}


fun Date.getMonthName(): String {
    val month = toCalendar()[Calendar.MONTH]
    val dfs = DateFormatSymbols()
    val months = dfs.months
    return months[month]
}
0
Felipe Castilhos

J'ai trouvé cela beaucoup plus facile ( https://docs.Oracle.com/javase/tutorial/datetime/iso/enum.html )

private void getCalendarMonth(Date date) {      
    Calendar calendar.setTime(date);
    Month month = Month.of(calendar.get(Calendar.MONTH));       
    Locale locale = Locale.getDefault();
    System.out.println(month.getDisplayName(TextStyle.FULL, locale));
    System.out.println(month.getDisplayName(TextStyle.NARROW, locale));
    System.out.println(month.getDisplayName(TextStyle.SHORT, locale));
}
0
JibinNajeeb
DateFormat date =  new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));
0
Sanjeev Mishra

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

String englishMonth (int month){
        return Month.of(month);
    }
0
mxhc

Cela a fonctionné pour moi

        import Java.text.SimpleDateFormat;
        import Java.util.Calendar;


        Calendar cal = Calendar.getInstance();
        String currentdate=new SimpleDateFormat("dd-MMM").format(cal.getTime());
0
mahadev gouda