javaparsingdatetime

Convert Month String to Integer in Java


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?


Solution

  • 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