How can I find Saturday and Sunday this month?

I want to find all Saturdays and Sundays this month. How can i do this?

+4
source share
4 answers

The easiest way is to simply iterate over all the days of the month and check the day of the week for each of them. For instance:

// This takes a 1-based month, eg January=1. If you want to use a 0-based // month, remove the "- 1" later on. public int countWeekendDays(int year, int month) { Calendar calendar = Calendar.getInstance(); // Note that month is 0-based in calendar, bizarrely. calendar.set(year, month - 1, 1); int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int count = 0; for (int day = 1; day <= daysInMonth; day++) { calendar.set(year, month - 1, day); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); if (dayOfWeek == Calendar.SUNDAY || dayOfweek == Calendar.SATURDAY) { count++; // Or do whatever you need to with the result. } } return count; } 

I am absolutely sure that there are much more effective ways to do this, but this is where I will start and optimize when I find it too slowly.

Please note that if you can use Joda Time , it would make your life a lot easier ...

+8
source

Try the following:

 import java.util.Calendar; import java.util.GregorianCalendar; public class Sundays { public static void main(String[] args) { int year = 2012; // put the month you want int month = Calendar.JANUARY; Calendar cal = new GregorianCalendar(year, month, 1); do { int day = cal.get(Calendar.DAY_OF_WEEK); if (day == Calendar.SATURDAY || day == Calendar.SUNDAY) { System.out.println(cal.get(Calendar.DAY_OF_MONTH)); } cal.add(Calendar.DAY_OF_YEAR, 1); } while (cal.get(Calendar.MONTH) == month); } } 
+1
source

Based on the previous answer, I have a slight modification. When you find the first Saturday and Sunday, you can simply add 7 days to it until the month is changed.

+1
source

I ask you to go through this method, I faced a lot, finally created my own.

 public static int getDayDiff(String dateFrom, String dateTo){ // DD/MM/YYYY Timestamp tDtF = getTimestampDDmmYYYY(dateFrom);//returning timestamp from / DD/MM/YYYY Timestamp tDtT = getTimestampDDmmYYYY(dateTo); Calendar dtF = new GregorianCalendar(); Calendar dtT = new GregorianCalendar(); dtF.setTimeInMillis(tDtF.getTime()); dtT.setTimeInMillis(tDtT.getTime()); int count = 0; while(dtF.before(dtT)){ count++; dtF.add(Calendar.DAY_OF_YEAR, 1); } return count; } public static int countDateSatOrSun(String dateFrom, String dateTo){//DD/MM/YYYY Timestamp tDtF = getTimestampDDmmYYYY(dateFrom);//returning timestamp from / DD/MM/YYYY Timestamp tDtT = getTimestampDDmmYYYY(dateTo); Calendar dtF = new GregorianCalendar(); Calendar dtT = new GregorianCalendar(); dtF.setTimeInMillis(tDtF.getTime()); dtT.setTimeInMillis(tDtT.getTime()); int count = 0; while(dtF.before(dtT)){ if((dtF.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY| dtF.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)) count++; dtF.add(Calendar.DAY_OF_YEAR, 1); } return count; } 

This will give you an accurate result.

0
source

Source: https://habr.com/ru/post/1403917/


All Articles