I am trying to create an app, and got stuck at calculating if today is in the school year. The user enters two dates, with no year, that reoccur annually. These are the start and end dates of the school year.
I want to check if the current date, is between these two, even if it overlaps two years. So if school starts on November, and ends on june, if today is January 22nd, it should return true. But if its july, it should return false.
I did find this question: Php - work out what academic year it is, But it works on academic years, which don't have a holiday.
BTW I have joda time, if that helps.
Thanks in advance.
解决方案
Well, I thought for a bit and found a few solutions, but this seemed simplest.
private boolean isInSchoolYear(DateTime now, DateTime schoolYearStart, DateTime schoolYearEnd){
int thisYear = now.getYear();
schoolYearStart = schoolYearStart.withYear(thisYear);
schoolYearEnd = schoolYearEnd.withYear(thisYear);
if(schoolYearStart.isBefore(schoolYearEnd)){
return new Interval(schoolYearStart, schoolYearEnd).contains(now);
}
else{
return !(new Interval(schoolYearEnd, schoolYearStart).contains(now));
}
}
This way it works both if the school year overlaps 2 years or 1.