2013-02-01 2 views
2

나는 알람 애플리케이션이 있으며 데이터베이스에 알람을 저장합니다. 모든 알람은 잘 작동하며 값 (밀리 초)은 올바른 숫자로 저장됩니다. 이제는 데이터베이스에서 해당 시간을 표시하려고합니다. 그리고 시간 형식으로 시간을 retreive하기 위해 달력을 사용하고 있습니다 : mm 형식은 다음과 같습니다Android 캘린더가 잘못된 시간을 표시합니다.

Calendar calendar = Calendar.getInstance(); 
SimpleDateFormat timeformat = new SimpleDateFormat("HH:mm"); 

milis = c.getInt(2); 
calendar.setTimeInMillis(milis); 
vreme = timeformat.format(calendar.getTime()); 
listavreme.add(vreme); 

Milis 내가 HH의 getTime()을 표시 할 때이 (테스트)하지만 Cursor에서 올바른 번호로 검색됩니다 항상 여분의 시간으로 표시됩니다. 따라서 milis 값이 61200000 (17:00)이면 달력에 18:00으로 표시됩니다. 나는 그것을 이해할 수 없다.

답변

3

나는 위치 예를 들어 (가)이 시간대에 연결됩니다

+0

감사합니다. – user1880779

+1

당신은 wellcome입니다 :-) –

1

Calendar.getInstance을

timeformat.setTimeZone(TimeZone.getTimeZone("GMT")); 

을하려고 당신에 시간대를 설정해야합니다 생각합니다. 특별히 제공하지 않으면 JRE의 기본값을 사용합니다. 나는 당신 GMT + 1 것 같아요. 그래서, 당신이 (정확하게) 시간대없이 원시 millis를 저장하고 있기 때문에, 그것은 그 시간을 잃고 있습니다. 시도해보십시오.

 
    TimeZone utc = TimeZone.getTimeZone("UTC"); 
    Calendar calendar = Calendar.getInstance(utc); 
+0

그래서 그것은 단지 이미 시간대에 묶여 그것을 저장하는 것이 가장 좋은가요? – user1880779

+0

Noooooooo! :) 당신은 그것을 바로하고 있습니다. 시간대없이 날짜와 시간을 항상 저장하십시오. 시간대는 UI에 대한 장식 일뿐입니다. 저장된 모든 것은 순수 UTC 여야합니다. –

+0

그래서 User를 처리 할 때 표준 시간대를 설정 했습니까? 이상한 게 뭔지 알아? 내 시간대는 gmt + 1이므로 당연히 휴대 전화입니다. 그러나 calendar.setTimeZone (TimeZone.getTimeZone ("GMT + 1")); '같은 일이 발생합니다 (시간이 1 시간 추가로 표시됨). GMT에서만 작동합니다. 이유가 무엇입니까? 나는 그것을 나의 시간대에 맞추어야한다고 생각 했단 말인가? – user1880779

관련 문제