Calculating a month as an “interim" period in java

I want to select the entries that created the date between the first and last day of this month. I calculate the month from the beginning and ending as follows:

The month date is just a random date inside the timeframe

Calendar cal = Calendar.getInstance();
cal.setTime(month);
int endday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int actualmonth = cal.get(Calendar.MONTH) + 1;
int year = cal.get(Calendar.YEAR);

Date begin = format.parse("01." + actualmonth + "." + year);
Date end = format.parse(endday + "." + actualmonth + "." + year);

When I think about it, I will also need to set the daytime to avoid skipping entries on the last day of the month.

I feel this kinda ridiculous, anyone for a better solution?

+3
source share
3 answers

, , , 1, , . . , . .

  Calendar dateCal = Calendar.getInstance();
  dateCal.set(Calendar.MONTH, month);
  dateCal.set(Calendar.YEAR, year);
  dateCal.set(Calendar.HOUR_OF_DAY, 0);
  dateCal.set(Calendar.MINUTE, 0);
  dateCal.set(Calendar.SECOND, 0);
  dateCal.set(Calendar.MILLISECOND, 0);
  Date startDate = dateCal.getTime();

  dateCal.add(Calendar.MONTH, 1)
  dateCal.add(Calendar.MILLISECOND, -1);
  Date endDate = dateCal.getTime();
+6

, Calendar :

getActualMaximum(Calendar.DAY_OF_MONTH)
getActualMinimum(Calendar.DAY_OF_MONTH)
+3

okay, decided his example of Paul:

Calendar cal = Calendar.getInstance();
cal.setTime(month);
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.getActualMinimum(Calendar.DATE), 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
Date begin = cal.getTime();
cal.add(Calendar.MONTH, 1);
cal.add(Calendar.MILLISECOND, -1);
Date end = cal.getTime();

thanks everyone

0
source

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


All Articles