Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java get month string from integer

Tags:

java

date

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); 
like image 1000
shinynewbike Avatar asked Apr 27 '11 03:04

shinynewbike


People also ask

How to get month name from integer in java?

Month of() method in Java The of() method is a built-in method of the Month ENUM which is used to generate a Month instance from an integer value. The integer value should be in the range 1-12 representing any of the 12 months and the method generates a Month instance from it representing a month-of-year.

How to get month number from string in java?

// displaying month number Format f = new SimpleDateFormat("M"); String strMonth = f. format(new Date()); System. out. println("Month Number = "+strMonth);

How to get month from SimpleDateFormat in java?

// displaying month in MMM format SimpleDateFormat simpleformat = new SimpleDateFormat("MMM"); String strMonth= simpleformat. format(new Date()); System. out. println("Month in MMM format = "+strMonth);

How to write month in java?

// displaying month in MMMM format SimpleDateFormat simpleformat = new SimpleDateFormat("MMMM"); String strMonth= simpleformat. format(new Date()); System. out. println("Month in MMMM format = "+strMonth);


2 Answers

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).

like image 60
Flash Avatar answered Oct 09 '22 09:10

Flash


Month enum

You could use the Month enum. This enum is defined as part of the new java.time framework built into Java 8 and later.

int monthNumber = 10; Month.of(monthNumber).name(); 

The output would be:

OCTOBER

Localize

Localize to a language beyond English by calling getDisplayName on the same Enum.

String output = Month.OCTOBER.getDisplayName ( TextStyle.FULL , Locale.CANADA_FRENCH ); 

output:

octobre

like image 20
Abhishek Shah Avatar answered Oct 09 '22 11:10

Abhishek Shah