android 日期选择 输入当前日期 ,查询所在本天所在周的起始日期与结束日期 (可跨年计算)

  private void setTimeData(String type ,String str){

        Log.i("info",CurrentWeak+"");

        if (CurrentWeak.equals("0")){
            CurrentWeak = "7";
        }

        String [] timeStr = str.split("-");

        if (types.equals(MyApplication.TIME_DAY)) {
            startTime = str+" 07:00:00:000";
            endTime = getDayAdd(str)+" 07:00:00:000";
        } else if (types.equals(MyApplication.TIME_WEAK)) {
            startTime =  getWeekAdd(str,1-Integer.parseInt(CurrentWeak))+" 07:00:00:000";
            endTime =  getWeekAdd(str,8-Integer.parseInt(CurrentWeak))+" 07:00:00:000";
        } else if (types.equals(MyApplication.TIME_HALFMONTH)) {
            if (Integer.parseInt(timeStr[2])>15){
                startTime = timeStr[0]+"-"+timeStr[1]+"-15 07:00:00:000";
                endTime = timeStr[0]+"-"+timeStr[1]+"-"+getMonths(timeStr[1])+" 07:00:00:000";
            }else{
                startTime = timeStr[0]+"-"+timeStr[1]+"-01 07:00:00:000";
                endTime = timeStr[0]+"-"+timeStr[1]+"-15 07:00:00:000";
            }
        } else if (types.equals(MyApplication.TIME_MONTH)) {
            startTime = timeStr[0]+"-"+timeStr[1]+"-01 07:00:00:000";
            endTime = timeStr[0]+"-"+timeStr[1]+"-"+getMonths(timeStr[1])+" 07:00:00:000";

        } else if (types.equals(MyApplication.TIME_YEAR)) {
            startTime = timeStr[0]+"-01-01 07:00:00:000";
            endTime = timeStr[0]+"-12-31 07:00:00:000";
        }
        time_text.setText("查询开始时间 "+startTime);
        time_text_end.setText("查询截至时间 "+endTime);
    }
 private String getWeekAdd(String day,int offset){
        String [] timeStr = day.split("-");

        int days =Integer.parseInt(timeStr[2]);
        int month =Integer.parseInt(timeStr[1]);
        int years =Integer.parseInt(timeStr[0]);

        if (days+offset>0&&days+offset<Integer.parseInt(getMonths(timeStr[1]))){
            //本月
            days = days+offset;
        }else  if (days+offset>Integer.parseInt(getMonths(timeStr[1]))){
            //后半月包括下个月
            if (month+1>12){
                //年底12月 包括下一年
                years = years +1 ;
                month = 1 ;
                days = days+offset-31;
            }else{
                //本年
                month = month+1 ;
                days = days+offset-Integer.parseInt(getMonths(timeStr[1]));
            }
        }else  if (days+offset<=0){
            //前半月和上个月
            if (month-1<=0){
                //1 月份 包括年前
                years = years -1 ;
                month = 12 ;
                days = 31+days+offset;

            }else{
                //本年
                month = month-1 ;
                days = Integer.parseInt(getMonths((month-1)+""))+days+offset+1;
            }
        }

        return years+"-"+(month>10?""+month:"0"+month)+"-"+(days>10?""+days:"0"+days);
    }

    private String getDayAdd(String day){

        String [] timeStr = day.split("-");

        String days ="";
        String month = "";
        String years = "";
        if(timeStr[1].equals("12")&&timeStr[2].equals("31")){
            int yearInteger = Integer.parseInt(timeStr[0]);
            years = (yearInteger+1)+"";
            month = "01";
            days = "01";
        }else{
            if (timeStr[2].equals(getMonths(timeStr[1]))){
                int monthInteger = Integer.parseInt(timeStr[1]);
                month = ((monthInteger+1)+"").length()==2?(monthInteger+1)+"":"0"+(monthInteger+1)+"";
                days ="01";
            }else{
                month = timeStr[1];
                int dayInteger = Integer.parseInt(timeStr[2]);
                days = ((dayInteger+1)+"").length()==2?(dayInteger+1)+"":"0"+(dayInteger+1)+"";
            }
            years = timeStr[0];
        }

            return years+"-"+month+"-"+days;
    }

    private String getMonths(String month){
        if ("135781012".contains(month)||"01030507081012".contains(month)){
            return "31";
        }else if ("2".contains(month)||"02".contains(month)){
            return "28";
        }else{
            return "30";
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值