我正在設置鬧鐘,我從TextView
和AM/PM通過Spinner
獲取小時和分鐘。這裏是我初始化Calendar
對象:calendar.set(Calendar.HOUR_OF_DAY,alarmHour);不管用。我究竟做錯了什麼?
Calendar calen = Calendar.getInstance();
calen.set(Calendar.HOUR_OF_DAY, alarmHour); //alarmHour from TextView
calen.set(Calendar.MINUTE, alarmMinute); //alarmMinute from TextView
calen.set(Calendar.SECOND, 0);
calen.set(Calendar.MILLISECOND, 0);
if(amorpm.equals("PM") //amorpm from Spinner
{
calen.set(Calendar.AM_PM, Calendar.PM);
}
else
{
calen.set(Calendar.AM_PM, Calendar.AM);
}
問題是這樣的Calendar
對象的小時值有時即其中用戶在TextView
進入值正確(和它始終是1到12) 。但有時,該值等於當前小時。例如,如果當前時間是晚上11:30,我把鬧鐘調在上午9:30,則小時字段的值是。奇怪的是,當我將Calendar
對象的名稱更改爲其他名稱時,如cal,它可以工作。但以後不會工作。什麼可能是錯的?
感謝您的幫助!
這確實是我犯的錯誤。但我注意到,當我從微調器中選擇「PM」並在'HOUR'中輸入鬧鐘「12」時,它會在鬧鐘中將「PM」更改爲「AM」。同樣,選擇「AM」和「12」將其更改爲「PM」。儘管如此,它對非12值仍然有效。 –
'Calendar.HOUR'只能取值0-11(http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#HOUR),所以很可能試着做一些聰明的事情,當你把它設置爲12時,將AM/PM向前滾動。 – adrian
感謝您的回答。我決定採用'Calendar.HOUR_OF_DAY'中的值,並通過自己的邏輯設置AM/PM,因爲在應用程序中,我只以12小時的格式獲取值。 –