Number of days in particular month of particular year? Number of days in particular month of particular year? java java

Number of days in particular month of particular year?


Java 8 and later

@Warren M. Nocos. If you are trying to use Java 8's new Date and Time API, you can use java.time.YearMonth class. See Oracle Tutorial.

// Get the number of days in that monthYearMonth yearMonthObject = YearMonth.of(1999, 2);int daysInMonth = yearMonthObject.lengthOfMonth(); //28  

Test: try a month in a leap year:

yearMonthObject = YearMonth.of(2000, 2);daysInMonth = yearMonthObject.lengthOfMonth(); //29 

Java 7 and earlier

Create a calendar, set year and month and use getActualMaximum

int iYear = 1999;int iMonth = Calendar.FEBRUARY; // 1 (months begin with 0)int iDay = 1;// Create a calendar object and set year and monthCalendar mycal = new GregorianCalendar(iYear, iMonth, iDay);// Get the number of days in that monthint daysInMonth = mycal.getActualMaximum(Calendar.DAY_OF_MONTH); // 28

Test: try a month in a leap year:

mycal = new GregorianCalendar(2000, Calendar.FEBRUARY, 1);daysInMonth= mycal.getActualMaximum(Calendar.DAY_OF_MONTH);      // 29


Code for java.util.Calendar

If you have to use java.util.Calendar, I suspect you want:

int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

Code for Joda Time

Personally, however, I'd suggest using Joda Time instead of java.util.{Calendar, Date} to start with, in which case you could use:

int days = chronology.dayOfMonth().getMaximumValue(date);

Note that rather than parsing the string values individually, it would be better to get whichever date/time API you're using to parse it. In java.util.* you might use SimpleDateFormat; in Joda Time you'd use a DateTimeFormatter.


You can use Calendar.getActualMaximum method:

Calendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, year);calendar.set(Calendar.MONTH, month);int numDays = calendar.getActualMaximum(Calendar.DATE);