時間操作,根據起始--結束時間按周劃分

需求是這樣的,從數據庫查到課程的開始和結束時間然後根據周來劃分,先初步劃分出時間

主要代碼

  public List<HmScheduleTest> selectCourseSchedule(){
        List<HmScheduleTest>  list=new ArrayList<HmScheduleTest>();
        //根據教練或天使老師查詢出課程id
        //未寫...
        //根據課程ID查詢課程信息
        String id="0ae00bcc-eb0c-4495-88ae-be30e40eff6e";
        HmCourseCase hmCourseCase = hmCourseCaseMapper.selectByPrimaryKey(id);
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" );
        //判斷開始日期是周幾
          //開始時間
         Calendar c= Calendar.getInstance();
         c.setTime(hmCourseCase.getBeginTime());//開始時間
         //結束時間
        Calendar d= Calendar.getInstance();
        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;//計算出一共分幾周
        long oneWeeksEnd=0;
        for (int i=1;i<=weeks;i++){
            if(i==1){//判斷當前爲第一週時
                //第一週
               // startDay 開始時間 然後再轉化爲yyyy-mm-dd HH:mm:ss
                String beginweeks=format.format(start);//第一週開始時間
                //計算本週結束時間
                oneWeeksEnd=startDay+(7-dayForWeek)*86400000;//得到毫秒數
                Calendar calendar = Calendar.getInstance();
                calendar.setTimeInMillis(oneWeeksEnd);//Date日期
                //結束時間
                String endweeks=format.format(oneWeeksEnd);//轉化爲yyyy-mm-dd HH:mm:ss
                //根據本週開始時間和結束時間查詢電話數和作業數
                HmScheduleTest hmScheduleTest=new HmScheduleTest(i,beginweeks,endweeks);
                list.add(hmScheduleTest);

            }else if (i==weeks){//判斷當前爲最後一週時
                long beginweeksMill=oneWeeksEnd+86400000+(i-2)*7*86400000;//當前周開始時間
                Calendar calendarbegin = Calendar.getInstance();
                calendarbegin.setTimeInMillis(beginweeksMill);
                Date datebegin= calendarbegin.getTime();
                //當前周開始時間轉化爲yyyy-mm-dd HH:mm:ss
                String beginweeks=format.format(datebegin);
                long endweeksMill=beginweeksMill+(dayEndWeek-1)*86400000;
                Calendar calendarend = Calendar.getInstance();
                calendarend.setTimeInMillis(endweeksMill);
                //當前周結束時間轉化爲yyyy-mm-dd HH:mm:ss
                Date dateend= calendarend.getTime();
                String endweeks=format.format(dateend);
                HmScheduleTest hmScheduleTest=new HmScheduleTest(i,beginweeks,endweeks);
                list.add(hmScheduleTest);
            }else {
                //long beginweeksMill=startDay+((7-dayForWeek)+(i-1)*7)*86400000;//當前周開始時間
                long beginweeksMill=oneWeeksEnd+86400000+(i-2)*7*86400000;
                Calendar calendarbegin = Calendar.getInstance();
                calendarbegin.setTimeInMillis(beginweeksMill);
                Date datebegin= calendarbegin.getTime();
                //當前周開始時間轉化爲yyyy-mm-dd HH:mm:ss
                String beginweeks=format.format(datebegin);
                long endweeksMill=beginweeksMill+6*86400000;
                Calendar calendarend = Calendar.getInstance();
                calendarend.setTimeInMillis(endweeksMill);
                //當前周結束時間轉化爲yyyy-mm-dd HH:mm:ss
                Date dateend= calendarend.getTime();
                String endweeks=format.format(dateend);
                HmScheduleTest hmScheduleTest=new HmScheduleTest(i,beginweeks,endweeks);
                list.add(hmScheduleTest);
            }
        }
        return list;

時間是

最後返回的結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章