Я пытаюсь реализовать способ вернуть следующее:
- дата текущего квартала
- дата предыдущего квартала
- текущий год
- предыдущий год
Мне удалось выяснить, как это сделать для типичного года, начинающегося 01.01, с помощью следующего:
//Current quarter start and end date
aCalendar.setTime(this.startdate);
aCalendar.set(Calendar.MONTH, aCalendar.get(Calendar.MONTH) / 3 * 3);
aCalendar.set(Calendar.DAY_OF_MONTH, 1);
this.quarterStartDate = aCalendar.getTime();
aCalendar.setTime(this.startdate);
aCalendar.set(Calendar.MONTH, aCalendar.get(Calendar.MONTH) / 3 * 3 + 2);
aCalendar.set(Calendar.DAY_OF_MONTH, aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
this.quarterEndDate = aCalendar.getTime();
if (this.quarterEndDate.getTime() > currentCalendar.getTimeInMillis())
this.quarterEndDate = currentCalendar.getTime();
// previous quarter
aCalendar.setTime(this.startdate);
aCalendar.add(Calendar.MONTH, -3);
aCalendar.set(Calendar.MONTH, aCalendar.get(Calendar.MONTH) / 3 * 3 + 2);
aCalendar.set(Calendar.DAY_OF_MONTH, aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
this.previousQuarterEndDate = aCalendar.getTime();
aCalendar.setTime(this.startdate);
aCalendar.add(Calendar.MONTH, -3);
aCalendar.set(Calendar.MONTH, aCalendar.get(Calendar.MONTH) / 3 * 3);
aCalendar.set(Calendar.DAY_OF_MONTH, 1);
this.previousQuarterStartDate = aCalendar.getTime();
// current year
aCalendar.setTime(this.startdate);
aCalendar.set(Calendar.MONTH, 11);
aCalendar.set(Calendar.DAY_OF_MONTH, 31);
this.currentYearEndDate = aCalendar.getTime();
if (this.currentYearEndDate.getTime() > currentCalendar.getTimeInMillis())
this.currentYearEndDate = currentCalendar.getTime();
aCalendar.setTime(this.startdate);
aCalendar.set(Calendar.MONTH, 0);
aCalendar.set(Calendar.DAY_OF_MONTH, 1);
this.currentYearStartDate = aCalendar.getTime();
// previous year
aCalendar.setTime(this.currentYearEndDate);
aCalendar.set(Calendar.YEAR, aCalendar.get(Calendar.YEAR) - 1);
aCalendar.set(Calendar.MONTH, 11); //
aCalendar.set(Calendar.DAY_OF_MONTH, 31);
this.previousYearEndDate = aCalendar.getTime();
aCalendar.setTime(this.currentYearStartDate);
aCalendar.set(Calendar.YEAR, aCalendar.get(Calendar.YEAR) - 1);
aCalendar.set(Calendar.MONTH, 0); //
aCalendar.set(Calendar.DAY_OF_MONTH, 1);
this.previousYearStartDate = aCalendar.getTime();
Однако, что я пытаюсьРешить, если год начинается в другой день, например, 3/01/2018, чем квартал будет
**Q1** = 03/01/2018 -05/31/2018
**Q2** = 06/01/2018- 08/30/2018
**Q3** = 09/01/2018 - 11/30/2018
**Q4** = 12/01/2018 - 02/28/2019
МОЙ ВОПРОС как я могу вернутьсятекущий / предыдущий квартал и год, даты начала и окончания.Например, предположим, что сегодняшняя дата - 19.10.2017, тогда должно быть возвращено следующее:
- текущий квартал: Start_Date = 9/1/2018 End_Date = 19/19/2018
- предыдущий квартал: Start_Date = 01.06.2017 End_Date = 30/30/2018
- Текущий год: Start_Date = 01.03.2017 End_Date = 10/19/2018
- предыдущий год:Start_Date = 3/12017 End_Date = 2/28/2018