-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 며칠 전 계산 public static int[] fewDaysAgo(int beforeDay) { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, +1); int temp = cal.get(Calendar.DAY_OF_MONTH); if (beforeDay < 0 && ((beforeDay + temp) < 1)) { cal.add(Calendar.MONTH, -1); // 미리 1달 앞으로 감 cal.add(Calendar.DAY_OF_MONTH, beforeDay); // 이전 달의 월을 기준으로 계산 cal.add(Calendar.MONTH, +1); // 8번 계산 후 month -1 되므로 다시 +1 } else { cal.add(Calendar.DAY_OF_MONTH, beforeDay); } int[] result = {cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)}; return result; } | cs |
-
자바 calendar에서 오늘을 기준으로 며칠 전을 구하기
안드로이드에서 검색 기간을 2017년 5월 6일(당시 오늘)과 6일전으로 설정하도록 했습니다.
이전에는 별 문제 없이 사용하고 있었어요.
문제 발생일은 2017년 5월 6일 입니다. 그 날을 기준으로 6일전을 했더니 2017년 4월 31일로 설정 되었습니다.
웹서버에서 Exception이 발생 되었고, 해당 원인은 2017년 4월 31일은 없는 날이라서 발생 된 것입니다.
왜 java calendar는 2017년 4월 30일이 아닌 31일로 보냈을까요...?
어디까지 제 생각입니다..
5월은 31일까지 있습니다.. 6일에서 6일전으로 가게되면 5, 4, 3, 2, 1일에서 다시 해당 달의 31일로 간 후 월을 1달 전으로 옮기는 것 같습니다..
그래서 4월 31일이 된 것이죠..
그래서 미리 달을 이전 달을 기준으로 계산하고, 자바 캘린더가 다시 앞 달로 옮길테니(이전 전 달이 되겠죠..), 다시 달을 +1을 해줍니다..