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;
  }