获取日期

    /** 
    * 获取过去或者未来 任意天内的日期数组 
    * @param intervals      intervals天内 
    * @return              日期数组 
    */  
   public static ArrayList<String> test(int intervals ) {  
       ArrayList<String> pastDaysList = new ArrayList<>();  
       ArrayList<String> fetureDaysList = new ArrayList<>();  
       for (int i = 0; i <intervals; i++) {  
           pastDaysList.add(getPastDate(i));  
           fetureDaysList.add(getFetureDate(i));  
       }  
       return pastDaysList;  
   }  

 

    /** 
    * 获取过去第几天的日期 
    * 
    * @param past 
    * @return 
    */  
   public static String getPastDate(int past) {  
       Calendar calendar = Calendar.getInstance();  
       calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);  
       Date today = calendar.getTime();  
       SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
       String result = format.format(today);  
       Log.e(null, result);  
       return result;  
   }  

 

     /** 
    * 获取未来 第 past 天的日期 
    * @param past 
    * @return 
    */  
   public static String getFetureDate(int past) {  
       Calendar calendar = Calendar.getInstance();  
       calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + past);  
       Date today = calendar.getTime();  
       SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
       String result = format.format(today);  
       Log.e(null, result);  
       return result;  
   }

 

    /**
     * 时间段内所有日期
     * @param begin
     * @param end
     * @return
     * @throws ParseException
     */
    public static List<String> getPeriod(String begin, String end) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        List<String> strDate = new ArrayList();
        strDate.add(begin);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(sdf.parse(begin));
        boolean bContinue = true;
        while (bContinue) {
            calendar.add(Calendar.DAY_OF_MONTH, 1);
            if (sdf.parse(end).after(calendar.getTime())) {
                strDate.add(sdf.format(calendar.getTime()).toString());
            } else {
                break;
            }
        }
        strDate.add(end);
        return strDate;
    }

 

//根据当前日期获得所在周的日期区间(周一和周日日期)
    public String getNowWeekTimeInterval(String type) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
        if (1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }
        // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        // 获得当前日期是一个星期的第几天
        int day = cal.get(Calendar.DAY_OF_WEEK);
        if(type.equals("start")){
            // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
            cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
            String imptimeBegin = sdf.format(cal.getTime());
            return imptimeBegin;
        }else if(type.equals("end")){
            cal.add(Calendar.DATE, 6);
            String imptimeEnd = sdf.format(cal.getTime());
            return  imptimeEnd;
        }
        return null;
    }

 

//根据当前日期获得上周的日期
    private String getLastWeekTimeInterval(String type) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        if(type.equals("start")){//周一
            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
            int offset1 = 1 - dayOfWeek;
            calendar.add(Calendar.DATE, offset1 - 7);
            String lastBeginDate = sdf.format(calendar.getTime());
            return lastBeginDate;
        }else if(type.equals("end")){//周日
            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
            int offset2 = 7 - dayOfWeek;
            calendar.add(Calendar.DATE, offset2 - 7);
            String lastEndDate = sdf.format(calendar.getTime());
            return  lastEndDate;
        }
        return null;
    }

 

//获取一周开始到结束的list集合
public static List<Date> findDates(Date dBegin, Date dEnd)  
     {  
      List lDate = new ArrayList();  
      lDate.add(dBegin);  
      Calendar calBegin = Calendar.getInstance();  
      // 使用给定的 Date 设置此 Calendar 的时间  
      calBegin.setTime(dBegin);  
      Calendar calEnd = Calendar.getInstance();  
      // 使用给定的 Date 设置此 Calendar 的时间  
      calEnd.setTime(dEnd);  
      // 测试此日期是否在指定日期之后  
      while (dEnd.after(calBegin.getTime()))  
      {  
       // 根据日历的规则,为给定的日历字段添加或减去指定的时间量  
       calBegin.add(Calendar.DAY_OF_MONTH, 1);  
       lDate.add(calBegin.getTime());  
      }  
      return lDate;  
     }

 

//本月日期
    private String getNowMonthTimeInterval(String type){
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
        Calendar ca = Calendar.getInstance();
        if(type.equals("start")){//本月第一天
            ca.add(Calendar.MONTH, 0);
            ca.set(Calendar.DAY_OF_MONTH,1);
            String start= format.format(ca.getTime());
            return start;
        }else if(type.equals("end")){//获取当前月最后一天
            ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
            String end= format.format(ca.getTime());
            return end;
        }
        return null;
    }

 

//上个月日期
    private String getLastMonthTimeInterval(String type){
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
        Calendar ca = Calendar.getInstance();
        if(type.equals("start")){//上月第一天
            ca.add(Calendar.MONTH, -1);
            ca.set(Calendar.DAY_OF_MONTH, 1);
            String start = format.format(ca.getTime());
            return start;
        }else if(type.equals("end")){//获取上月最后一天
            int month=ca.get(Calendar.MONTH);
            ca.set(Calendar.MONTH, month-1);
            ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
            String end = format.format(ca.getTime());
            return end;
        }
        return null;

    }

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值