Étant donné une chaîne de mois telle que:
"Feb"
or
"February"
Existe-t-il une fonctionnalité de base de la bibliothèque Java ou tierce qui vous permettrait de convertir cette chaîne en un numéro de mois correspondant de manière indépendante des paramètres régionaux?
Une alternative à SimpleDateFormat utilisant le temps Joda:
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
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);
Faites attention en comparant int month
à un int (ça fait pas égal à 2!). Le plus sûr est de les comparer en utilisant les champs statiques de Calendar
(comme Calendar.FEBRUARY
).
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 publie ceci au cas où quelqu'un voudrait une solution simple et facile à comprendre Je sais que je l'aurais voulu avant de l'avoir dactylographiée :
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;
}