주어진 날짜 문자열에서 다음 월요일을 계산하는 방법을 사용하고 있습니다.2 년 동안의 달력 계산과 관련된 문제
public static String getStartOfNextWeek(String DATE){
String format = "dd.MM.yyyy";SimpleDateFormat df = new SimpleDateFormat(format);
Date date = null;
try {
date = df.parse(DATE);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week = cal.get(Calendar.WEEK_OF_YEAR);
int year = cal.get(Calendar.YEAR);
Calendar calendar = new GregorianCalendar();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.WEEK_OF_YEAR, week);
//add 8 days to get next weeks Monday
calendar.add(Calendar.DAY_OF_WEEK, 8);
Date startDate = calendar.getTime();
SimpleDateFormat df2 = new SimpleDateFormat("dd.MM.yyyy");
String start = df2.format(startDate);
return start;
이 작업은 1 년 동안 완벽하게 작동하지만 2 년 동안 문제가 발생하면 문제가 발생합니다. 예를 들어
:
input: 15.12.2014
output: 22.12.2014 CORRECT
input: 22.12.2014
output: 29.12.2014 CORRECT
input: 29.12.2014
output: 6.1.2014 INCORRECT
실수가 위치한 곳은 "1"로 WEEK_OF_YEAR 걸리지 만 년 "2014"로, 이렇게 출력이 기술적으로 정확하기 때문에 나는 알고 있습니다. 내 목적이 잘못되었습니다.
1 주일에 2015 년 다음 월요일을 원한다는 것을 캘린더 개체에 어떻게 알릴 수 있습니까?
가능한 복제본 [특정 날짜 이후 첫 번째 월요일에 도착할 수 있습니까?] (http://stackoverflow.com/questions/7565356/get-first-monday-after-date) 및 [this] (http : // stackoverflow .com/q/9612328/642706) 및 [this] (http://stackoverflow.com/q/10072914/642706) 및 [this] (http://stackoverflow.com/q/26754164/642706) 및 기타 . 팁 : Joda-Time. –
당신의 산출물에 단지 일년이 아닌 일 또한 잘못되었습니다. 2014-12-29에 이어 첫 번째 월요일은 2015-01-05 (6 일 아니라)입니다. –
Basil, 자세히보세요 - 다음 월요일 29.12에서 6.1.1 ** 2014 **를 반환합니다.실제로 ** ** 잘못된 것입니다. –