user1372061 - 1 year ago 63
Java Question

# How to calculate the number of Tuesday in one month?

How to calculate number of Tuesday in one month?

Using

`calender.set`
we can set particular month, after that how to calculate number of Mondays, Tuesdays etc. in that month?

Code is :

``````public static void main(String[] args )
{
Calendar calendar = Calendar.getInstance();
int  month = calendar.MAY;
int year = 2012;
int date = 1 ;

calendar.set(year, month, date);

int MaxDay = calendar.getActualMaximum(calendar.DAY_OF_MONTH);
int mon=0;

for(int i = 1 ; i < MaxDay ; i++)
{
calendar.set(Calendar.DAY_OF_MONTH, i);
if (calendar.get(Calendar.DAY_OF_WEEK) == calendar.MONDAY )
mon++;
}

System.out.println("days  : " + MaxDay);
System.out.println("MOndays  :" + mon);
}
``````

Without writing whole code here is the general idea:

``````    Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH, Calendar.MAY); // may is just an example
c.set(Calendar.YEAR, 2012);
int th = 0;
int maxDayInMonth = c.getMaximum(Calendar.MONTH);
for (int d = 1;  d <= maxDayInMonth;  d++) {
c.set(Calendar.DAY_OF_MONTH, d);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
if (Calendar.THURSDAY == dayOfWeek) {
th++;
}
}
``````

This code should count number of Thursday. I believe you can modify it to count number of all days of week.

Obviously this code is not efficient. It iterates over all the days in the month. You can optimize it by getting just get day of the week of the first day, the number of days in month and (I believe) you can write code that calculates number of each day of week without iterating over the whole month.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download