2012-09-12 4 views
4

시간과 분이 TextView이고 AM/PM이 Spinner 인 알람을 설정 중입니다.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에서 입력 값 즉, 때로는 올바른이다 (그리고 12에 항상 1) : 여기에 내가 Calendar 객체를 초기화하는 방법입니다 . 그러나 때때로 값은 현재 시간과 동일합니다. 예를 들어, 현재 시간이 오후 11시 반, 그리고 내가 오전 9시 반에 대한 알람을 설정 한 후 시간 필드 값 11있다. 한 가지 이상한 점은 Calendar 개체의 이름을 다른 것으로 변경하면 cal과 같이 작동한다는 것입니다. 그러나 나중에 일하지 않을 것이다. 무엇이 잘못 될 수 있습니까?

도움 주셔서 감사합니다.

답변

11

나는 솔루션이 문제는 당신이 Calendar.HOUR_OF_DAY 필드를 설정하는하고 다음은 AM/PM 필드를 설정하는 대신 calen.set(Calendar.HOUR_OF_DAY, alarmHour);

calen.set(Calendar.HOUR, alarmHour);를 호출하는 것입니다 생각합니다. "하루 중의 시간"은 24 시간 내내 1 시간이므로 오전/오후와 함께 사용하면 의미가 없습니다. +

HOUR_OF_DAY

AM_PM : 하루의 시간을 설정할 때 충돌하는 정보가 제시되는 경우 Java 문서 (http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html)에 따르면, 다음, 가장 최근에 설정 정보는 다음과 같은 조합에 따라 사용됩니다 HOUR

당신이 시간 이후의 AM/PM 필드를 설정하기 때문에이 시간은 인스턴스를 만들 때 현재 시간에 초기화 물론이다 Calendar.HOUR 필드에서 가져옵니다.

변수의 이름은 물론 빨간 청어입니다. 그럴 가능성은 없습니다.

+0

그건 내가 실제로 만들고있는 실수입니다. 그러나 나는 방금 "PM"을 스피너에서 선택하고 "HOUR"에 알람 시간 "12"를 입력하면 알람에서 "PM"을 "AM"으로 변경하는 것으로 나타났습니다. 마찬가지로 "AM"과 "12"를 선택하면 "PM"으로 바뀝니다. 그래도 12가 아닌 값은 괜찮습니다. –

+3

'Calendar.HOUR'는 값 0-11 (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#HOUR)만을 사용하도록되어 있으므로 아마 AM/PM을 12로 설정했을 때 AM/PM을 롤링하면서 지능적으로 작업하려고합니다. – adrian

+0

답변 해 주셔서 감사합니다. 나는 Calendar.HOUR_OF_DAY'에서 값을 가져 와서 자신의 논리를 통해 AM/PM을 설정하기로 결정했습니다. 앱에서 12 시간 형식의 값만 가져 왔기 때문입니다. –

관련 문제