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?
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;
}
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()));
Aussi simple que cela
mCalendar = Calendar.getInstance();
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
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
.
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
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:
январь
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");
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");
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 );
Month::getDisplayName
Depuis Java 8, utilisez la variable Month
enum. La méthode getDisplayName
localise automatiquement le nom du mois.
Passer:
TextStyle
pour déterminer combien de temps ou comment est abrégé.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()
);
}
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.
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,...
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);
Vous pouvez l'obtenir une ligne comme ceci: String monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]
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
.
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]
}
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));
}
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 AVRIL et ainsi de suite.
String englishMonth (int month){
return Month.of(month);
}
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());