Comment obtenir le nom du mois de Calendrier
Est-il un oneliner pour obtenir le nom du mois, quand nous savons int monthNumber = calendar.get(Calendar.MONTH)
? Ou quel est le moyen le plus facile?
- Cette question (stackoverflow.com/questions/6192781/month-name-as-a-string) mentionne getDisplayName() et d'autres intesreting astuces
Vous devez vous connecter pour publier un commentaire.
Vous obtiendrez de cette façon aussi.
vous pouvez la réaliser à l'aide de SimpleDateFormat, qui est destiné à être le format de la date et l'heure.
Aussi simple que cela
октября
au lieu deОктябрь
, qui vous attendent probablement.C'est la solution, je suis venu avec un projet de classe:
Le numéro que vous passez provient d'un
Calendar.MONTH
appel.new SimpleDateFormat("MMMM").format(cal.getTime());
si vous avez multi-langue de l'interface, vous pouvez utiliser getDisplayName pour afficher le nom du mois avec contrôle de l'affichage de la langue.
voici un exemple d'afficher le nom du mois en anglais, en français, en arabe et en arabe, dans un pays donné comme "la Syrie":
le résultat est:
Pour certaines langues (par exemple, en russe) c'est la seule façon correcte pour obtenir les noms des mois.
C'est ce que vous obtenez, si vous utilisez
getDisplayName
de laCalendar
ouDateFormatSymbols
pour le mois de janvier:января (ce qui est correct pour une date complète de la chaîne: "10 января, 2014")
mais dans le cas d'un stand-alone nom de mois que vous attendez:
январь
Joda-Time
Comment sur l'utilisation de Joda-Time. C'est une bien meilleure date-heure d'API pour travailler avec (Et
January
signifie ici janvier. Ce n'est pas comme le Calendrier, qui utilise0-based
indice pour le mois).Vous pouvez utiliser
AbstractDateTime#toString( pattern )
méthode pour le format de la date dans le format spécifié:Nom Du Mois À Partir Du Numéro
Si vous voulez le nom du mois, pour un mois particulier, vous pouvez le faire comme ceci:
Localiser
L'approche ci-dessus utilise votre JVM actuel de paramètres Régionaux par défaut pour la langue du nom du mois. Vous souhaitez spécifier des paramètres Régionaux de l'objet à la place.
SimpleDateFormat
etDate
Month::getDisplayName
Depuis Java 8, utilisez la
Mois
enum. LegetDisplayName
méthode localise automatiquement le nom du mois.Pass:
TextStyle
pour déterminer combien de temps ou de façon abrégée.Locale
pour spécifier le langage humain utilisée dans la traduction, et les normes culturelles utilisé pour les abréviations, la ponctuation, etc.Exemple:
Il pourrait être une vieille question, mais comme un liner pour obtenir le nom du mois, quand nous savons que les indices, j'ai utilisé
ou pour les noms courts
S'il vous plaît être conscient que votre
monthNumber
commence à compter à partir de 1 si l'une des méthodes ci-dessus renvoie un tableau, donc vous avez besoin pour commencer à compter à partir de 0.Ce code a support de la langue.
J'avais utilisé dans l'Application Android.
Vous pouvez obtenir une ligne comme ceci:
String monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]
Cela fonctionne pour moi:
Des retours
"September"
avec une seule ligne:D'une manière:
Nous avons
Month
API en Java (java.time.Month
). Nous pouvons obtenir l'aide deMonth.of(month);
Ici, le
Month
sont indexés comme les numéros de sorte que vous pouvez fournir parMonth.JANUARY
ou de fournir un indice de l'API ci-dessus, par exemple 1, 2, 3, 4.Deuxième façon:
Cette option est disponible dans
java.time.ZonedDateTime
.J'ai créé un kotlin extension sur la base des réponses à ce sujet et à l'aide de la DateFormatSymbols réponses que vous obtenez un localisée réponse.
Il retourne le nom anglais de la fin du mois.
04 retourne AVRIL et ainsi de suite.
Month
ou appliquertoString
le résultat avant de le retourner.Cela a fonctionné pour moi
Je trouve cela beaucoup plus facile(https://docs.oracle.com/javase/tutorial/datetime/iso/enum.html)
de la SimpleDateFormat java doc: