2013-10-10 2 views
0

나는 아래의 코드를 사용하지만해서는 안됩니다 - 제가 값을 얻고 얻기! ..자바 (안드로이드)에서 달력 기능에 의해 음의 값

Calendar calendar = Calendar.getInstance(); 
calendar.clear(); 
calendar.set(2013, 10, 31, 23, 00); 

ctim=calendar.getTimeInMillis();//system time at shut down 


calendar.clear(); 
calendar.set(2013, 11, 1, 1, 00); 
long cTime = calendar.getTimeInMillis();//system time at restart 
timediff = cTime-ctim; 

내가 잘못이 무엇인지 잘 모릅니다 .. ?? !!

답변

3

여기에 문제가 있습니다. Java의 달은 1-12가 아닌 0-11에서 표시됩니다. Javadocs for the Calendar.MONTH은 다음과 같이 말합니다.

get 및 set을위한 필드 번호는 해당 월을 나타냅니다. 이것은 달력 관련 값입니다. 그레고리 안 및 율리우스 력의 연도의 첫 번째 달은 0 인 JANUARY입니다. 마지막 달은 1 년에 몇 달이 걸리는지에 달려 있습니다. 그래서 첫 번째

11 월 30 일이 있기 때문에 (Calendar의는 기본적으로 "관대"입니다) 11 월 31 일 또는 12 월 1 일로 intrepreted된다. 두 번째 날짜는 12 월 1 일로 해석됩니다. "yyyy-MM-dd HH:mm:ss"SimpleDateFormat로 인쇄

그래서 두 번, 다음과 같습니다

당신이 받고있는 -79200000 밀리 초에 해당하는 부정적인 22시간의 차이를,의
2013-12-01 23:00:00 
2013-12-01 01:00:00 

.

calendar.set(2013, 9, 31, 23, 00); // 9 here is October 

calendar.set(2013, 10, 1, 1, 00); // 10 here is November 

당신은 긍정적 인 변화를 얻을 수 있습니다 : 달에서

빼기 1 당신이 입력하고 있습니다.