javadate

Java get month string from integer


Is there a better way to compact this method i.e. reduce the cyclomatic complexity by avoid the switch cases?

String monthString;
        switch (month) {
            case 1:  monthString = "January";       break;
            case 2:  monthString = "February";      break;
            case 3:  monthString = "March";         break;
            case 4:  monthString = "April";         break;
            case 5:  monthString = "May";           break;
            case 6:  monthString = "June";          break;
            case 7:  monthString = "July";          break;
            case 8:  monthString = "August";        break;
            case 9:  monthString = "September";     break;
            case 10: monthString = "October";       break;
            case 11: monthString = "November";      break;
            case 12: monthString = "December";      break;
            default: monthString = "Invalid month"; break;
        }
        System.out.println(monthString);

Solution

  • Try:

    import java.text.DateFormatSymbols;
    monthString = new DateFormatSymbols().getMonths()[month-1];
    

    Alternatively, you could use SimpleDateFormat:

    import java.text.SimpleDateFormat;
    System.out.println(new SimpleDateFormat("MMMM").format(date));
    

    (You'll have to put a date with your month in a Date object to use the second option).