Given a month string such as:
"Feb"
or
"February"
Is there any core java or third party library functionality that would allow you to convert this string to the corresponding month number in a locale agnostic way?
Given a month string such as:
"Feb"
or
"February"
Is there any core java or third party library functionality that would allow you to convert this string to the corresponding month number in a locale agnostic way?
You could parse the month using 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);
Be careful comparing int month to an int (it does not equal 2!). Safest is to compare them using Calendar's static fields (like Calendar.FEBRUARY).
An alternative to SimpleDateFormat using 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