Java - чтобы получить дату начала и окончания каждой недели для данного месяца
Ниже приведен код, который я использую для расчета даты начала и окончания недели для данного месяца. Предположим, что день начала недели - понедельник, а день конца недели - воскресенье. Например, в январе 2013 года будет 5 недель. Если месяц начинается с воскресенья - игнорируйте этот день
Январь 2013 первая неделя - с 31 декабря 2012 года по 06 января 2013 года вторая неделя - с 7 января 2013 года по 13 января 2013 года Третья неделя - с 14 января 2013 года по 20 января 2013 года четвертая неделя - 21 января -2013 - 27 января 2013 года, пятая неделя - с 28 января 2013 года по 3 февраля 2013 года
public static void main(String[] args) {
List<List<String>> weekdates = getNumberOfWeeks(2013, Calendar.JULY);
for(List<String> weekDatesLoop:weekdates){
System.out.println("Start day: "+weekDatesLoop.get(0).toString());
System.out.println("End day: "+weekDatesLoop.get(1).toString());
}
}
public static List<List<String>> getNumberOfWeeks(int year, int month) {
System.out.println("Month Id: "+month);
month = month-1;
System.out.println("Month Id: " + month);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
List<List<String>> weekdates = new ArrayList<List<String>>();
List<String> dates = new ArrayList<String>();
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, 1);
dates.add(format.format(c.getTime()));
//int numOfWeeksInMonth = 1;
while (c.get(Calendar.MONTH) == month) {
//System.out.println(c.get(Calendar.DAY_OF_WEEK) );
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
dates.add(format.format(c.getTime()));
weekdates.add(dates);
}
else if (c.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {
dates = new ArrayList<String>();
dates.add(format.format(c.getTime()));
//numOfWeeksInMonth++;
}
c.add(Calendar.DAY_OF_MONTH, 1);
}
if(dates.size() < 2){
c.add(Calendar.DAY_OF_MONTH, -1);
dates.add(format.format(c.getTime()));
weekdates.add(dates);
}
System.out.println(weekdates);
return weekdates;
}
Я все еще работаю над этим. Может кто-нибудь, пожалуйста, помогите мне исправить это?