2013-02-12 73 views
2

我想從四個輸入構建的日曆對象中獲得一分鐘的時間:月(3rd),日(星期四),小時(1),分(30 )和am/pm。另外,如果過去的時間應該增加一個月。將月曆設置爲X月的月份

如何設置日曆到這個時間?

此代碼似乎沒有設置一天。小時,分鐘和上午/下午正確設置。

日曆設置:

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

微調設置:

<string-array name="week_of_month"> 
    <item>1st</item> 
    <item>2nd</item> 
    <item>3rd</item> 
    <item>4th</item> 
</string-array> 
<string-array name="day_of_week"> 
    <item>Sunday</item> 
    <item>Monday</item> 
    <item>Tuesday</item> 
    <item>Wednesday</item> 
    <item>Thursday</item> 
    <item>Friday</item> 
    <item>Saturday</item> 
</string-array> 
<string-array name="hour"> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
    <item>4</item> 
    <item>5</item> 
    <item>6</item> 
    <item>7</item> 
    <item>8</item> 
    <item>9</item> 
    <item>10</item> 
    <item>11</item> 
    <item>12</item> 
</string-array> 
<string-array name="minute"> 
    <item>00</item> 
    <item>05</item> 
    <item>10</item> 
    <item>15</item> 
    <item>20</item> 
    <item>25</item> 
    <item>30</item> 
    <item>35</item> 
    <item>40</item> 
    <item>45</item> 
    <item>50</item> 
    <item>55</item> 
</string-array> 
<string-array name="am_pm"> 
    <item>am</item> 
    <item>pm</item> 
</string-array> 

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

回答

5

使用calendar.set(Calendar.WEEK_OF_MONTH, <week of the month>);calendar.set(Calendar.DAY_OF_WEEK, 4);

示例 -

Calendar calendar = Calendar.getInstance(); 
System.out.println("Before - "+calendar.getTime()); 
calendar.set(Calendar.WEEK_OF_MONTH, 3); 
calendar.set(Calendar.DAY_OF_WEEK, 4); 
System.out.println("After - "+calendar.getTime()); 

結果 -

Before - Tue Feb 12 23:23:28 IST 2013 
After - Wed Feb 13 23:18:16 IST 2013 
+0

我不知道一個月的日子。我只知道每週的哪一天和哪一天(即三月的第三個星期四)的一週中的第n天; – jophde 2013-02-12 17:30:42

+0

@jophde回答更新 – 2013-02-12 17:51:21

+0

不應該是星期四而不是星期三? – 2016-06-14 06:42:30