총 게시물 38,696건, 최근 2 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

날짜를 이전날짜 혹은 다음날짜로 이동하는 함수를 출력

글쓴이 : 3rsy 날짜 : 2017-08-08 (화) 14:12 조회 : 925
글주소 : http://www.androidside.com/B49/168017
 
  COLOR 전문 태광포리머
플라스틱 제품 COLOR 조색 및 드라이칼라 마스터배치 전문생산
www.tk-polymer.co.kr
  COLOR 트리바고
250개 호텔 예약사이트비교, COLOR, 후기와 평점 한 번에 비교!
www.trivago.co.kr
  (주)위즈옵틱스
광학측정장비 전문업체, 대학 및 연구소 광학기기, 간섭계 등 제품 안내.
www.wizoptics.com
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

public long prevDay(long date) {
// date 값을 문자열로 변경.
String dateStr = String.valueOf(date);

// 문자열을 년, 월, 일 단위로 자르기
String yearStr = dateStr.substring(0, 4);
String monthStr = dateStr.substring(4, 6);
String dayStr = dateStr.substring(6);
// 달력용 계산을 하기 위해서 int 형으로 변경해준다.
int year = Integer.parseInt(yearStr);
int month = Integer.parseInt(monthStr);
int day = Integer.parseInt(dayStr);

// 날짜를 1 감소 시킴
Calendar cal = Calendar.getInstance();
cal.set(year, month-1, day);

cal.add(Calendar.DATE, -1);
Date tmp01 = cal.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd", Locale.getDefault());
// 계산된 format 결과 값을 문자열로 변환
String tmp02 = formatter.format(tmp01);
// 문자열로 변환된 값을 long 형으로 변환 후 리턴
long sumDay = Long.parseLong(tmp02);
Log.d("점검:",tmp02);
return sumDay;
}
점검:: 20170807
점검:: 20170806
점검:: 20170805
점검:: 20170804
점검:: 20170803
점검:: 20170802
점검:: 20170801
점검:: 20170731
점검:: 20170730
점검:: 20171006
점검:: 20171005
점검:: 20171004

위에 소스는 해당 년월일을 long 변수를 받아 -1을 해서 반환해주는 함수 입니다.
전체적으로 문제는 없는것 같은데
위와 같이 로그를 찍다보면 갑자기 20170730에서 20171006으로 이동됩니다.

혹 위 소스에 대해서 문제가 발생하는 건가요?

(질문포인트는 제가 포이트가 적어 30포인트만 ㅜ)






질문자가 자신의 포인트 30 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 24을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

OSKiller 2017-08-08 (화) 14:25
값을 변화 시켜서 로그를 찍을떄는 항상 src도 찍어 주는게 디버깅 하기 편하죠
단지 저 함수만 봐서는 long data가 뭔지 알수가 없어서 확인 할수 있는 부분이 없네요
댓글주소 추천 0 반대 0
     
     
3rsy 2017-08-08 (화) 14:37
[@OSKiller] long date는 초기화 값은 오늘 날짜이며, 저 함수를 지나고 나면 -1이 된 값으로 교체됩니다.
또한, 버튼을 또눌렀을 경우에는 계속 1씩감소되며, 화면에 그 해당하는 날짜에 대한 값을 보여주는 형식입니다.
댓글주소 추천 0 반대 0
          
          
OSKiller 2017-08-08 (화) 19:29
[@3rsy]
로그 메시지를 변경 해서 인풋과 아웃풋을 확인 하라고 가이드를 줘도 확인 안해 보시면 더이상 도와드릴 방법이...
댓글주소 추천 0 반대 0
mbsmin 2017-08-08 (화) 15:28
혹시 20170730 넣었을때 20171006 가 나오셨는지요?
그러진 않을꺼 같은데요?
저 현상의 재현이 되는 코드가 없어 확인이 불가능합니다.
저 로그가 나오는 코드를 올려 주세요. 지금 상황에서는 문제가 없습니다.
데이터 넣는곳에서 먼가 잘못하신거 아니실런지?

댓글주소 추천 0 반대 0
     
     
3rsy 2017-08-09 (수) 12:23
[@mbsmin]코드 분석 결과 데이터 넣는곳에서 코딩을 잘못했었네요..
long 데이터 타입인데 실수로 여기서 연산식을 넣어서 이상한 값이 다시 저 함수로 들어가는 결과가 되었습니다.
그래서 지금은 정상적으로 해결되었습니다^^
댓글주소 추천 0 반대 0
public 2017-08-08 (화) 15:29
말씀하신 그대로 구현해봤는데 정상적으로 날짜가 하나씩 줄어드는데요?
혹시 변환된 날짜값을 다른 변수에 잘못 저장하고 계신건 아닌지?
댓글주소 추천 0 반대 0
     
     
3rsy 2017-08-09 (수) 12:23
[@public] 변수를 이상한 연산을 해버려서 발생된 문제였습니다 ㅠ
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기