时间操作,根据起始--结束时间按周划分

需求是这样的,从数据库查到课程的开始和结束时间然后根据周来划分,先初步划分出时间

 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);
            }

主要代码

时间是

最后返回的结果

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值