Convertir une chaîne de mois en entier en Java
Étant donné une chaîne de mois telle que:
"Feb"
or
"February"
Existe-t-il une fonctionnalité de base Java ou de bibliothèque tierce qui vous permettrait de convertir cette chaîne au numéro de mois correspondant d'une manière agnostique locale?
5 réponses
Vous pouvez analyser le mois en utilisant SimpleDateFormat:
Date date = new SimpleDateFormat("MMM", Locale.ENGLISH).parse("Feb");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH);
System.out.println(month == Calendar.FEBRUARY);
Soyez prudent en comparant int month
à un int (il fait Pas égal 2!). Le plus sûr est de les comparer en utilisant les champs statiques de Calendar
(comme Calendar.FEBRUARY
).
Une alternative à SimpleDateFormat en utilisant Joda time:
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
...
// if default locale is ok simply omit '.withLocale(...)'
DateTimeFormatter format = DateTimeFormat.forPattern("MMM");
DateTime instance = format.withLocale(Locale.FRENCH).parseDateTime("août");
int month_number = instance.getMonthOfYear();
String month_text = instance.monthOfYear().getAsText(Locale.ENGLISH);
System.out.println( "Month Number: " + month_number );
System.out.println( "Month Text: " + month_text );
OUTPUT:
Month Number: 8
Month Text: August
Solution Java 8:
DateTimeFormatter parser = DateTimeFormatter.ofPattern("MMM")
.withLocale(Locale.ENGLISH);
TemporalAccessor accessor = parser.parse("Feb");
System.out.println(accessor.get(ChronoField.MONTH_OF_YEAR)); // prints 2
Vous pouvez simplement configurer une déclaration de commutateur, quelque chose comme ceci (ci-dessous). Je poste ceci au cas où quelqu'un voudrait une solution simple et facile à comprendre Je sais que je l'aurais voulu avant de taper ceci:
switch(input2) {
case "january":
case "jan":
input2 = "1";
break;
case "febuary":
case "feb":
input2 = "2";
break;
case "march":
case "mar":
input2 = "3";
break;
case "april":
case "apr":
input2 = "4";
break;
case "may":
input2 = "5";
break;
case "june":
case "jun":
input2 = "6";
break;
case "july":
case "jul":
input2 = "7";
break;
case "august":
case "aug":
input2 = "8";
break;
case "september":
case "sep":
case "sept":
input2 = "9";
break;
case "october":
case "oct":
input2 = "10";
break;
case "november":
case "nov":
input2 = "11";
break;
case "december":
case "dec":
input2 = "12";
break;
}