안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요 날짜 관련해서 코딩을 할게 있는데 궁금한 것이 있습니다.
여느 인터넷에 나와있는 날짜 받는 소스를 사용하면 꼭 월에 대한 부분이 한달정도 차이가 납니다.
오늘이 2011년 5월 29일이면 2011년 4월 29일로 인식을 합니다.
기기는 갤럭시 S이고 날짜 관련된 어플들 돌아가는거 보면 오늘 날짜를 정확하게 인식을 합니다.
이미 검색해서 위와 같은 문제를 질문한 걸 훑어보았는데, 대게 월에 그냥 1을 더하라는 답변이
거의 다 거더군요.
그럴 경우 1월 같은 경우 12월로 찍히고, 다시 여기 1을 더하면 13이 되어서 문제가 되지 않나 싶습니다.
혹시나 좋은 해결법 있으시면 한 수 부탁드립니다. (_ _)




Calendar 클래스를 보시면..(이건 자바에서도 동일한 클래스를 사용합니다.. 꼭 안드로이드에 국한되지 않구요..)
기초 자바 서적등에서 설명이 잘 되 있는것들이 있는데 참조해 보시면 좋겠구요.
Calendar의 인스턴스를 생성하고나면(getInstance()) 테이블 형식으로 날짜, 요일, 월, 년, 시간 등이 인스턴스 생성시간을 기준으로 저장이 됩니다. 물론 set method를 사용해서 임의로 바꿀수도 있구요..
Calendar 중에 get(int field) 이라는 method가 있습니다.field값에 따라서 해당 데이터를 반납해주는건데요...
여기서 중요한건 이 리턴값의 타입인데, 이건 int형으로 되 있습니다. 즉 날짜나 요일, 시간 등이 모두 정수형으로 반환이 되는거죠.
요일의 경우 일요일이 1, 토요일이 7입니다.
날짜의 경우 숫자와 똑같이 매치가 되어 1일이 1, 31일이 31
월의 경우 1월이 0, 12월이 11입니다.
이건 클래스에 정의되 있고, 이유는 잘 모르겠지만(가져와 쓰는 개발자 입장에서는 궂이 알 필요도 없죠.) 구현자가 그렇게 약속을 했기 때문에 고려해서 사용해야겠죠..
또 하나 중요한 것은 이 필드들은 모두 연결되 있습니다. 즉 set으로 month값을 하나 추가시킨다면 get관련 method 사용시 모든 필드가 동기화 됩니다. 2010년 12월 1일이 인스턴스에 담겨있을 경우 month에 1을 추가하면 2010년도 하나 추가되어 2011로 변한다는 뜻이죠..
자료나 서적으로 Calendar class나 Date class를 좀 더 상세히 알아보시기를 추천드립니다. 실무에서도 은근히 쓰일데가 많거든요..