需求是这样的,从数据库查到课程的开始和结束时间然后根据周来划分,先初步划分出时间
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd" );
//判断开始日期是周几
//开始时间
Calendar c= Calendar.getInstance();
c.setTime(hmCourseCase.getBeginTime());//开始时间
//结束时间
Calendar d= Calendar.getInstance();
if (hmCourseCase.getExtendTime()!=null){
d.setTime(hmCourseCase.getExtendTime());
}else {
d.setTime(hmCourseCase.getEndTime());//结束时间
}
//计算开始时间为周几
int dayForWeek=0 ;//开始时间为周几
if (c.get(Calendar.DAY_OF_WEEK)==1 ){
dayForWeek=7 ;
}else {
dayForWeek=c.get(Calendar.DAY_OF_WEEK)-1;
}
//计算结束时间为周几
int dayEndWeek=0 ;//结束时间为周几
if (d.get(Calendar.DAY_OF_WEEK)==1 ){
dayEndWeek=7 ;
}else {
dayEndWeek=d.get(Calendar.DAY_OF_WEEK)-1;
}
Date start=c.getTime();
Date end=d.getTime();
String aa=format.format(start);
//计算两个时间之间相差多少天,再计算出两个日期之间相差的天数
long startDay = c.getTime().getTime();//把时间转换为毫秒
long endDay = d.getTime().getTime();//把时间转换为毫秒
long days=(endDay-startDay)/86400000;//相差天数 86400000:一天时间的毫秒数
long days2=days+dayForWeek+(7-dayEndWeek);
long weeks=days2/7;//计算出一共分几周
String beginweeks="";
String endweeks="";
long beginweeksMill=0;
long endweeksMill=0;
Calendar calendarbegin = Calendar.getInstance();
//第一周结束时间
String OneWeeksEnd="";
for (int i=1;i<=weeks;i++){
if(i==1){//判断当前为第一周时
//第一周
// startDay 开始时间 然后再转化为yyyy-mm-dd HH:mm:ss
beginweeks=format.format(start);//第一周开始时间
//计算本周结束时间
endweeksMill=startDay+(7-dayForWeek)*86400000;//得到毫秒数
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(endweeksMill);//Date日期
//结束时间
endweeks=format.format(endweeksMill);//转化为yyyy-mm-dd HH:mm:ss
//根据本周开始时间和结束时间
}else if (i==weeks){//判断当前为最后一周时
beginweeksMill=endweeksMill+86400000;//当前周开始时间
calendarbegin.setTimeInMillis(beginweeksMill);
Date datebegin= calendarbegin.getTime();
//当前周开始时间转化为yyyy-mm-dd HH:mm:ss
beginweeks=format.format(datebegin);
endweeks=format.format(d.getTime());
}else{//非第一周和最后一周时
beginweeksMill=endweeksMill+86400000;
calendarbegin.setTimeInMillis(beginweeksMill);
Date datebegin= calendarbegin.getTime();
//当前周开始时间转化为yyyy-mm-dd HH:mm:ss
beginweeks=format.format(datebegin);
endweeksMill=beginweeksMill+6*86400000;
calendarbegin.setTimeInMillis(endweeksMill);
//当前周结束时间转化为yyyy-mm-dd HH:mm:ss
Date dateend= calendarbegin.getTime();
endweeks=format.format(dateend);
}
主要代码
时间是
最后返回的结果