Y a-t-il une ligne pour obtenir le nom du mois quand on sait int monthNumber = calendar.get(Calendar.MONTH)
? Ou quel est le moyen le plus simple?
Y a-t-il une ligne pour obtenir le nom du mois quand on sait int monthNumber = calendar.get(Calendar.MONTH)
? Ou quel est le moyen le plus simple?
Réponses:
Vous obtiendrez également de cette façon.
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 en utilisant 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 ça
mCalendar = Calendar.getInstance();
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
октября
place de Октябрь
ce que vous attendez probablement.
Voici la solution que j'ai trouvé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 Calendar.MONTH
appel.
new SimpleDateFormat("MMMM").format(cal.getTime());
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().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), c'est la seule manière correcte 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 января, 2014 ")
mais dans le cas d'un nom de mois autonome, vous attendez:
январь
Que diriez-vous d'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' 0-based
index pendant des mois).
Vous pouvez utiliser la AbstractDateTime#toString( pattern )
méthode pour formater la date au format spécifié:
DateTime date = DateTime.now();
String month = date.toString("MMM");
Si vous voulez un nom de 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 actuels de votre JVM pour la langue du nom du mois. Vous souhaitez plutôt spécifier un objet Locale.
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
SimpleDateFormat
etDate
Month::getDisplayName
Depuis Java 8, utilisez l' Month
énumération. legetDisplayName
méthode localise automatiquement le nom du mois.
Passer:
TextStyle
pour déterminer combien de temps ou comment abrégé.Locale
pour spécifier la langue humaine utilisée dans la traduction, et les normes culturelles utilisées pour l'abréviation, 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 comme une seule ligne pour obtenir le nom du mois où nous connaissons 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 vous monthNumber
commencez à 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 prend en charge la langue. Je les avais utilisés dans l'application Android.
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,...
String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
J'ai trouvé cela beaucoup plus facile ( https://docs.oracle.com/javase/tutorial/datetime/iso/enum.html )
private void getCalendarMonth(Date date) {
Calendar calendar = Calendar.getInstance();
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));
}
Month
démarre pas son index avec janvier = 1, alors que Calendar commence par janvier = 0? N'échouerait-il pas Month.of(calendar.get(Calendar.MONTH));
dans le cas de janvier?
Une manière:
Nous avons une Month
API en Java ( java.time.Month
). Nous pouvons obtenir en utilisantMonth.of(month);
Ici, les Month
sont indexés sous forme de nombres afin que vous puissiez fournir Month.JANUARY
ou fournir un index dans l'API ci-dessus, tel que 1, 2, 3, 4.
Deuxième manière:
ZonedDateTime.now().getMonth();
Ceci est disponible en java.time.ZonedDateTime
.
J'ai créé une extension kotlin basée sur les réponses de cette rubrique et en utilisant les 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]
}
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());
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.
String englishMonth (int month){
return Month.of(month);
}
Month
soit appliquer toString
le résultat avant de le renvoyer.
à partir du document java SimpleDateFormat:
* <td><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
* <td><code>02001.July.04 AD 12:08 PM</code>
* <td><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
* <td><code>Wed, 4 Jul 2001 12:08:56 -0700</code>