Java获取指定时间段内的日期

Java日期总结:

1.获取每天的开始时间和结束时间

 /**
     * 获取每天的开始时间
     * @param date
     * @return
     */
    public static Date getDayStartTime(Date date){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.HOUR_OF_DAY, 0);//时
        cal.set(Calendar.MINUTE, 0);//分
        cal.set(Calendar.SECOND, 0);//秒
        cal.set(Calendar.MILLISECOND, 0);//毫秒
        return cal.getTime();
    }

    /**
     * 获取每天的结束时间
     * @param date
     * @return
     */
    public static Date getDayEndTime(Date date){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.HOUR_OF_DAY, 23);//时
        cal.set(Calendar.MINUTE, 59);//分
        cal.set(Calendar.SECOND, 59);//秒
        cal.set(Calendar.MILLISECOND, 0);//毫秒
        return cal.getTime();
    }

2.获取每月的第一天和最后一天

 /**
     * 获取每月的第一天
     * @param month
     * @return
     */
    public static Date getMonthStartTime(Integer month){
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        //将当前日期重置为每月的第一天
        cal.set(Calendar.DAY_OF_MONTH,1);
        cal.set(Calendar.MONTH,(month - 1));//月
        cal.set(Calendar.DATE,cal.getActualMinimum(Calendar.DATE));//天
        return getDayStartTime(cal.getTime());
    }

    /**
     * 获取每月的最后一天
     * @param month
     * @return
     */
    public static Date getMonthEndTime(Integer month){
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        cal.set(Calendar.DAY_OF_MONTH,1);
        cal.set(Calendar.MONTH,(month - 1));//月
        cal.set(Calendar.DATE,cal.getActualMaximum(Calendar.DATE));//天
        return getDayEndTime(cal.getTime());
    }

3.获取每年的第一天和最后一天时间

/**
     * 获取某年第一天日期
     *
     * @param year 年份
     * @return Date
     */
    public Date getYearStartTime(int year) {
        Calendar cal = Calendar.getInstance();
        cal.clear();
        cal.set(Calendar.YEAR, year);
        return getDayStartTime(cal.getTime());
    }

    /**
     * 获取某年最后一天日期
     *
     * @param year 年份
     * @return Date
     */
    public Date getYearEndTime(int year) {
        Calendar cal = Calendar.getInstance();
        cal.clear();
        cal.set(Calendar.YEAR, year);
        cal.roll(Calendar.DAY_OF_YEAR, -1);
        return getDayEndTime(cal.getTime());
    }

4.获取某个月份的所有日期:

 /**
     * 获取指定月份的所有日期
     * @param month
     * @return
     */
    public static List<Date> getAllDaysByMonth(Integer month){
        List<Date> list = new ArrayList<>();
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        //将当前日期重置为每月的第一天
        cal.set(Calendar.DAY_OF_MONTH,1);
        cal.set(Calendar.MONTH,(month - 1));//月
        int subDay = cal.getActualMaximum(Calendar.DATE) - cal.getActualMinimum(Calendar.DATE) + 1;
        for (int i = 1; i <= subDay; i++) {
            cal.set(Calendar.HOUR_OF_DAY, 0);//时
            cal.set(Calendar.MINUTE, 0);//分
            cal.set(Calendar.SECOND, 0);//秒
            cal.set(Calendar.MILLISECOND, 0);//毫秒
            cal.set(Calendar.DATE, i);
            list.add(cal.getTime());
        }
        return list;
    }
  1. 获取两个日期之间的日期
 /**
     * 获取两个日期之间的日期
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    public static List<Date> getDistanceDate(String startTime, String endTime) {
        List<Date> dates = new ArrayList<>();
        Date startDateTime = null;
        Date endDateTime = null;
        try {
            startDateTime = TemplateDate.dateToStr(startTime, "yyyy-MM-dd");
            endDateTime = TemplateDate.dateToStr(endTime, "yyyy-MM-dd");
        } catch (BusinessException e) {
            e.printStackTrace();
        }
        long differentDays = endDateTime.getTime() - startDateTime.getTime();
        int targetDays = ((int) (differentDays / 86400000L)) + 1;
        Calendar cal = Calendar.getInstance();
        for (int i = 0; i < targetDays; i++) {
            cal.setTime(startDateTime);
            cal.add(Calendar.DATE, i);
            dates.add(cal.getTime());
        }
        return dates;
    }

    public static void main(String[] args) throws BusinessException {
        String s1 = "2021-05-31 17:59:01";
        String s2 = "2021-04-20 17:59:01";
        List<Date> distanceDate = getDistanceDate(s2, s1);
        for (Date date : distanceDate) {
            System.out.println(TemplateDate.dateToStr(date, null));
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值