Set Calendar to X Day in Month
03:32 12 Feb 2013

I am trying to get a time down to the minute from a Calendar object built from four inputs: occurrence in month (3rd), day (Thursday), hour (1), minute(30), and am/pm. Also, if the time is in the past the month should increase by one.

How do I set a a Calendar to this time?

This code seems to not set the day. The hour, minute, and am/pm are setting correctly though.

Calendar Setup:

long getTime() {
    Calendar calendar = Calendar.getInstance();

    calendar.set(Calendar.DAY_OF_WEEK_IN_MONTH, getDayOfWeekInMonth());
    calendar.set(Calendar.DAY_OF_WEEK, getDayOfWeek());
    calendar.set(Calendar.HOUR, getHour());
    calendar.set(Calendar.MINUTE, getMinute());
    calendar.set(Calendar.AM_PM, getAmPm());

    if (System.currentTimeMillis() > calendar.getTimeInMillis()) {
        calendar.add(Calendar.MONTH, 1);
    }

    return calendar.getTimeInMillis();

}

int getDayOfWeekInMonth() {
    return weekOfMonthSpinner.getSelectedItemPosition() + 1;
}

int getDayOfWeek() {
    switch(dayOfWeekSpinner.getSelectedItemPosition()) {
    case 0:
        return Calendar.SUNDAY;
    case 1:
        return Calendar.MONDAY;
    case 2:
        return Calendar.TUESDAY;
    case 3:
        return Calendar.WEDNESDAY;
    case 4:
        return Calendar.THURSDAY;
    case 5:
        return Calendar.FRIDAY;
    case 6:
        return Calendar.SATURDAY;
    default:
        return 0;
    }
}

int getHour() {
    return Integer.parseInt((String) hourSpinner.getSelectedItem());
}

int getMinute() {
    return Integer.parseInt((String) minuteSpinner.getSelectedItem());
}

int getAmPm() {
    switch(amPmSpinner.getSelectedItemPosition()) {
    case 0:
        return Calendar.AM;
    case 1:
        return Calendar.PM;
    default:
        return 0;
    }
}

Spinner Setup:


    1st
    2nd
    3rd
    4th
 

    Sunday
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12


    00
    05
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55


    am
    pm


adapter = ArrayAdapter.createFromResource(getActivity(), R.array.week_of_month, R.layout.spinner_item);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
weekOfMonthSpinner.setAdapter(adapter);

adapter = ArrayAdapter.createFromResource(getActivity(), R.array.day_of_week, R.layout.spinner_item);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
dayOfWeekSpinner.setAdapter(adapter);

adapter = ArrayAdapter.createFromResource(getActivity(), R.array.hour, R.layout.spinner_item);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
hourSpinner.setAdapter(adapter);

adapter = ArrayAdapter.createFromResource(getActivity(), R.array.minute, R.layout.spinner_item);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
minuteSpinner.setAdapter(adapter);

adapter = ArrayAdapter.createFromResource(getActivity(), R.array.am_pm, R.layout.spinner_item);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
amPmSpinner.setAdapter(adapter);
java android