public boolean doDateTimeValidation() {
    Date startDate = convertStringToDate(startDay, startMonth, startYear, startHour, startMinute);
    Date endDate = convertStringToDate(endDay, endMonth, endYear, endHour, endMinute);

    userSelectedStartDateTime = startDate.getTime() / 1000L;
    userSelectedEndDateTime = endDate.getTime() / 1000L;
    long unixTime = System.currentTimeMillis() / 1000L;

    if (userSelectedStartDateTime > userSelectedEndDateTime) {
      Toast.makeText(
              MainActivity.this,
              "Start Date time cant be more than end date time",
              Toast.LENGTH_SHORT)
          .show();
      if (apiResults.getListings() != null) {
        mMap = mapFragment.getMap();
        mMap.clear();
      }
      return false;
    }

    if (userSelectedStartDateTime < unixTime) {
      Toast.makeText(
              MainActivity.this, "Start time must be greater than current time", Toast.LENGTH_SHORT)
          .show();
      if (apiResults.getListings() != null) {
        mMap = mapFragment.getMap();
        mMap.clear();
      }
      return false;
    }

    return true;
  }
 @Override
 public void onSaveInstanceState(Bundle savedInstanceState) {
   // Save the user's current search
   if (apiResults.getListings() != null) {
     saved = false;
     parking_listings = apiResults.getListings().toString();
     latitude = apiResults.getLat();
     longitude = apiResults.getLong();
     savedInstanceState.putString("parking_listings", parking_listings);
     savedInstanceState.putDouble("lat", latitude);
     savedInstanceState.putDouble("lng", longitude);
     super.onSaveInstanceState(savedInstanceState);
   }
   if (saved) {
     savedInstanceState.putString("parking_listings", parking_listings);
     savedInstanceState.putDouble("lat", latitude);
     savedInstanceState.putDouble("lng", longitude);
     super.onSaveInstanceState(savedInstanceState);
   }
 }
  @Override
  public void onClick(final View v) {
    if (v == btnCalendarStart) {
      // Launch Date Picker Dialog
      DatePickerDialog dpdStart =
          new DatePickerDialog(
              this,
              new DatePickerDialog.OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                  // Display Selected date in textbox
                  txtDateStart.setText(
                      String.format("%02d", dayOfMonth)
                          + "/"
                          + String.format("%02d", (monthOfYear + 1))
                          + "/"
                          + year);
                  startYear = year;
                  startMonth = monthOfYear;
                  startDay = dayOfMonth;
                }
              },
              startYear,
              startMonth,
              startDay);
      dpdStart.show();
    }
    if (v == btnCalendarEnd) {
      // Launch End Date Picker Dialog
      DatePickerDialog dpdEnd =
          new DatePickerDialog(
              this,
              new DatePickerDialog.OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                  txtDateEnd.setText(
                      String.format("%02d", dayOfMonth)
                          + "/"
                          + String.format("%02d", (monthOfYear + 1))
                          + "/"
                          + year);
                  endYear = year;
                  endMonth = monthOfYear;
                  endDay = dayOfMonth;
                }
              },
              endYear,
              endMonth,
              endDay);
      dpdEnd.show();
    }
    if (v == btnTimeStart) {
      // Launch Time Picker Dialog
      TimePickerDialog tpdStart =
          new TimePickerDialog(
              this,
              new TimePickerDialog.OnTimeSetListener() {

                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                  startHour = hourOfDay;
                  startMinute = minute;

                  if (startMinute != 0) {
                    Date startDate =
                        convertStringToDate(
                            startDay, startMonth, startYear, startHour, startMinute);
                    Date startDateRoundedToNearestHour = roundToNearestHour(startDate);

                    SimpleDateFormat sdf =
                        new SimpleDateFormat("dd/MM/yyyy HH:mm"); // the format of your date
                    sdf.setTimeZone(
                        TimeZone.getTimeZone("GMT-5")); // give a timezone reference for formating
                    String formattedDate = sdf.format(startDateRoundedToNearestHour);

                    String[] formattedDateSeparated = formattedDate.split(" ");
                    String[] formatDate = formattedDateSeparated[0].split("/");
                    String[] formatTime = formattedDateSeparated[1].split(":");

                    startDay = Integer.parseInt(formatDate[0]);
                    startMonth = Integer.parseInt(formatDate[1]) - 1;
                    startYear = Integer.parseInt(formatDate[2]);
                    startHour = Integer.parseInt(formatTime[0]);
                    startMinute = Integer.parseInt(formatTime[1]);

                    txtDateStart.setText(
                        String.format("%02d", startDay)
                            + "/"
                            + String.format("%02d", (startMonth + 1))
                            + "/"
                            + startYear);
                  }

                  txtTimeStart.setText(
                      String.format("%02d", startHour) + ":" + String.format("%02d", startMinute));
                }
              },
              startHour,
              startMinute,
              false);
      tpdStart.show();
    }

    if (v == btnTimeEnd) {
      // Launch Time Picker Dialog
      TimePickerDialog tpdEnd =
          new TimePickerDialog(
              this,
              new TimePickerDialog.OnTimeSetListener() {

                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                  endHour = hourOfDay;
                  endMinute = minute;
                  if (endMinute != 0) {
                    Date endDate =
                        convertStringToDate(endDay, endMonth, endYear, endHour, endMinute);
                    Date endDateRoundedToNearestHour = roundToNearestHour(endDate);

                    SimpleDateFormat sdf =
                        new SimpleDateFormat("dd/MM/yyyy HH:mm"); // the format of your date
                    sdf.setTimeZone(
                        TimeZone.getTimeZone("GMT-5")); // give a timezone reference for formating
                    String formattedDate = sdf.format(endDateRoundedToNearestHour);

                    String[] formattedDateSeparated = formattedDate.split(" ");
                    String[] formatDate = formattedDateSeparated[0].split("/");
                    String[] formatTime = formattedDateSeparated[1].split(":");

                    endDay = Integer.parseInt(formatDate[0]);
                    endMonth = Integer.parseInt(formatDate[1]) - 1;
                    endYear = Integer.parseInt(formatDate[2]);
                    endHour = Integer.parseInt(formatTime[0]);
                    endMinute = Integer.parseInt(formatTime[1]);

                    txtDateEnd.setText(
                        String.format("%02d", endDay)
                            + "/"
                            + String.format("%02d", (endMonth + 1))
                            + "/"
                            + endYear);
                  }

                  txtTimeEnd.setText(
                      String.format("%02d", endHour) + ":" + String.format("%02d", endMinute));
                }
              },
              endHour,
              endMinute,
              false);
      tpdEnd.show();
    }

    if (v == submitUpdate) {
      if (userSelectedDestination == null) {
        if (apiResults.getListings() != null) {
          mMap = mapFragment.getMap();
          mMap.clear();
        }
        Toast.makeText(MainActivity.this, "Destination cannot be empty", Toast.LENGTH_SHORT).show();
      } else {
        if (doDateTimeValidation()) {
          spinner.setVisibility(View.VISIBLE);
          submitUpdate.setEnabled(false);
          autoCompView.setFocusable(false);
          autoCompView.setFocusableInTouchMode(true);
          submitUpdate.getBackground().setColorFilter(0xFFFFFFFF, PorterDuff.Mode.MULTIPLY);
          String sorting = "rating";
          int checked_restroom = 0;
          int checked_mobile = 0;
          int checked_indoor = 0;
          int checked_attended = 0;
          int checked_security = 0;
          int checked_valet = 0;
          long epoch_start = userSelectedStartDateTime;
          long epoch_end = userSelectedEndDateTime;
          String urlString =
              "http://api.parkwhiz.com/search?destination="
                  + userSelectedDestination
                  + "&key="
                  + getResources().getString(R.string.park_whiz_key)
                  + "&start="
                  + epoch_start
                  + "&end="
                  + epoch_end
                  + "&sort="
                  + sorting
                  + "&restroom="
                  + 0
                  + "&security="
                  + 0
                  + "&valet="
                  + 0
                  + "&indoor="
                  + 0
                  + "&eticket="
                  + 0
                  + "&attended="
                  + 0;

          Toast.makeText(MainActivity.this, "Sending your request", Toast.LENGTH_SHORT).show();
          mMap = mapFragment.getMap();
          mMap.clear();
          apiResults = new GetAPIResults(getBaseContext(), mapFragment, this);
          apiResults.execute(urlString);
          hideSoftKeyboard();
        }
      }
    }
  }