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