public static Date convertDateTimeToDate(DateTime dateTime) { int year = dateTime.getYear(); int datetimeMonth = dateTime.getMonth(); int day = dateTime.getDay(); Calendar calendar = Calendar.getInstance(); calendar.clear(); // datetimeMonth start at 1. Need to minus 1 to get javaMonth calendar.set(year, datetimeMonth - 1, day); return calendar.getTime(); }
/** * Retrieve all the dates for a given calendar month Include previous month, current month and * next month. * * @param month * @param year * @param startDayOfWeek : calendar can start from customized date instead of Sunday * @return */ public static ArrayList<DateTime> getFullWeeks( int month, int year, int startDayOfWeek, boolean sixWeeksInCalendar) { ArrayList<DateTime> datetimeList = new ArrayList<DateTime>(); DateTime firstDateOfMonth = new DateTime(year, month, 1, 0, 0, 0, 0); DateTime lastDateOfMonth = firstDateOfMonth.plusDays(firstDateOfMonth.getNumDaysInMonth() - 1); // Add dates of first week from previous month int weekdayOfFirstDate = firstDateOfMonth.getWeekDay(); // If weekdayOfFirstDate smaller than startDayOfWeek // For e.g: weekdayFirstDate is Monday, startDayOfWeek is Tuesday // increase the weekday of FirstDate because it's in the future if (weekdayOfFirstDate < startDayOfWeek) { weekdayOfFirstDate += 7; } while (weekdayOfFirstDate > 0) { DateTime dateTime = firstDateOfMonth.minusDays(weekdayOfFirstDate - startDayOfWeek); if (!dateTime.lt(firstDateOfMonth)) { break; } datetimeList.add(dateTime); weekdayOfFirstDate--; } // Add dates of current month for (int i = 0; i < lastDateOfMonth.getDay(); i++) { datetimeList.add(firstDateOfMonth.plusDays(i)); } // Add dates of last week from next month int endDayOfWeek = startDayOfWeek - 1; if (endDayOfWeek == 0) { endDayOfWeek = 7; } if (lastDateOfMonth.getWeekDay() != endDayOfWeek) { int i = 1; while (true) { DateTime nextDay = lastDateOfMonth.plusDays(i); datetimeList.add(nextDay); i++; if (nextDay.getWeekDay() == endDayOfWeek) { break; } } } // Add more weeks to fill remaining rows if (sixWeeksInCalendar) { int size = datetimeList.size(); int row = size / 7; int numOfDays = (6 - row) * 7; DateTime lastDateTime = datetimeList.get(size - 1); for (int i = 1; i <= numOfDays; i++) { DateTime nextDateTime = lastDateTime.plusDays(i); datetimeList.add(nextDateTime); } } return datetimeList; }