Time tools (get the start time and end time of date week, date month)

Time tools (get the start time and end time of date week, date month)

Requires lombok dependency



package com.linkip.sentiment.util.date;
import com.whos.sa.analysis.Analysis;
import lombok.Data;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @author: craywen
 * @date: 2020-06-30 18:02
 * @desc:
 */
public class DateListUtils {
    
    


    public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");


    @Data
    public static class DateVo {
    
    
        private  String startDate;
        private  String endDate;
        private  DateVo (String startStr, String endStr){
    
    
            this.startDate=startStr;
            this.endDate=endStr;
        }
        private  DateVo (){
    
    

        }

    }

    /**
     * 日期段内获取月开始时间结束时间
     * @param startDate
     * @param endDate
     * @return
     */
    public static List<DateVo> getBetweenMonths(String startDate,String endDate) {
    
    
        List<DateVo> list = null;
        try {
    
    
            list = new ArrayList<DateVo>();
            String firstDay = "";
            String lastDay = "";
            Date d1 = sdf.parse(startDate);// 定义起始日期
            Date d2 =sdf.parse(endDate);// 定义结束日期

            Calendar dd = Calendar.getInstance();// 定义开始日期实例
            Calendar c = Calendar.getInstance();//结束日期
            dd.setTime(d1);// 设置日期起始时间
            c.setTime(d2);
            Calendar cale = Calendar.getInstance();
            int startDay = d1.getDate();
            int endDay = d2.getDate();
            DateVo keyValueForDate = null;
            while (dd.getTime().before(d2)) {
    
    // 判断是否到结束日期
                keyValueForDate = new DateVo();
                cale.setTime(dd.getTime());
                if(dd.getTime().equals(d1)){
    
    
                    if((dd.get(Calendar.MONTH) + 1)==(c.get(Calendar.MONTH) + 1)&&(dd.get(Calendar.YEAR) + 1)==(c.get(Calendar.YEAR) + 1)){
    
    
                        if(startDay==1)
                        {
    
    
                            cale.set(Calendar.DATE,endDay-startDay+1  );
                        }else{
    
    
                            cale.set(Calendar.DATE,endDay);
                        }

                    }else{
    
    
                        cale.set(Calendar.DAY_OF_MONTH, dd
                                .getActualMaximum(Calendar.DAY_OF_MONTH));
                    }
                    lastDay = sdf.format(cale.getTime());
                    keyValueForDate.setStartDate(sdf.format(d1));
                    keyValueForDate.setEndDate(lastDay);
                }else if(dd.get(Calendar.MONTH) == d2.getMonth() && dd.get(Calendar.YEAR) == c.get(Calendar.YEAR)){
    
    
                    cale.set(Calendar.DAY_OF_MONTH,1);//取第一天
                    firstDay = sdf.format(cale.getTime());
                    keyValueForDate.setStartDate(firstDay);
                    keyValueForDate.setEndDate(sdf.format(d2));
                }else {
    
    
                    cale.set(Calendar.DAY_OF_MONTH,1);//取第一天
                    firstDay = sdf.format(cale.getTime());
                    cale.set(Calendar.DAY_OF_MONTH, dd
                            .getActualMaximum(Calendar.DAY_OF_MONTH));
                    lastDay = sdf.format(cale.getTime());
                    keyValueForDate.setStartDate(firstDay);
                    keyValueForDate.setEndDate(lastDay);
                }
                list.add(keyValueForDate);
                dd.add(Calendar.MONTH, 1);// 进行当前日期月份加1
            }
            if(endDay<=startDay){
    
    
                keyValueForDate = new DateVo();
                cale.setTime(d2);
                cale.set(Calendar.DAY_OF_MONTH,1);//取第一天
                firstDay = sdf.format(cale.getTime());
                keyValueForDate.setStartDate(firstDay);
                keyValueForDate.setEndDate(sdf.format(d2));
                list.add(keyValueForDate);
            }
        } catch (ParseException e) {
    
    
            return null;
        }
        return list;
    }




    /**
     * 获取两个日期之间的所有日期
     * @param startDate
     * @param endDate
     * @return
     * @throws ParseException
     */
    public static List<DateVo> getBetweenDates(String startDate, String endDate) throws ParseException {
    
    
        Date start = sdf.parse(startDate);//定义起始日期
        Date end = sdf.parse(endDate);//定义结束日期
	   List<DateVo> result = new ArrayList<DateVo>();
	   Calendar tempStart = Calendar.getInstance();
	    tempStart.setTime(start);
        Calendar tempEnd = Calendar.getInstance();
        tempEnd.setTime(end);
        while (tempStart.before(tempEnd) || tempStart.equals(tempEnd)) {
    
    
            DateVo dateVo= new DateVo();
            dateVo.setStartDate(sdf.format(tempStart.getTime()));
            dateVo.setEndDate(sdf.format(tempStart.getTime()));
            result.add(dateVo);
             tempStart.add(Calendar.DAY_OF_YEAR, 1);
         }
	     return result;
    }


    /**
     * 获取两个日期之间的所有日期
     * @param startDate
     * @param endDate
     * @return
     * @throws ParseException
     */
    public static List<DateVo> getBetweenWeeks(String startDate, String endDate) throws ParseException{
    
    
        List<String> listWeekOrMonth = new ArrayList<String>();
        List<DateVo> dateVoList = new ArrayList<DateVo>();
        Date sDate = sdf.parse(startDate);
        Calendar sCalendar = Calendar.getInstance();
        sCalendar.setFirstDayOfWeek(Calendar.MONDAY);
        sCalendar.setTime(sDate);
        Date eDate = sdf.parse(endDate);
        Calendar eCalendar = Calendar.getInstance();
        eCalendar.setFirstDayOfWeek(Calendar.MONDAY);
        eCalendar.setTime(eDate);
        boolean bool =true;
            while(sCalendar.getTime().getTime()<eCalendar.getTime().getTime()){
    
    
                if(bool||sCalendar.get(Calendar.DAY_OF_WEEK)==2||sCalendar.get(Calendar.DAY_OF_WEEK)==1){
    
    
                    listWeekOrMonth.add(sdf.format(sCalendar.getTime()));
                    bool = false;
                }
                sCalendar.add(Calendar.DAY_OF_MONTH, 1);
             }
            listWeekOrMonth.add(sdf.format(eCalendar.getTime()));
            if(listWeekOrMonth.size()%2!=0){
    
    
                listWeekOrMonth.add(sdf.format(eCalendar.getTime()));
            }
        for (int i = 0; i < listWeekOrMonth.size()-1; i++) {
    
    
            if(i%2==0){
    
    
                DateVo dateVo= new DateVo();
                dateVo.setStartDate(listWeekOrMonth.get(i));
                dateVo.setEndDate(listWeekOrMonth.get(i+1));
                dateVoList.add(dateVo);
            }
          }
        return dateVoList;
    }

    public static void main(String[] args) throws ParseException {
    
    
        System.out.println("=======month=======");
        List<DateVo> betweenMonths = getBetweenMonths("2019-06-13", "2020-07-18");
        for (DateVo betweenDate : betweenMonths) {
    
    
            System.out.println(betweenDate.getStartDate()+"===="+betweenDate.getEndDate());
        }
        System.out.println("=======week=======");
        List<DateVo> betweenWeeks = getBetweenWeeks("2020-07-01", "2020-07-09");
        for (DateVo betweenDate : betweenWeeks) {
    
    
            System.out.println(betweenDate.getStartDate()+"===="+betweenDate.getEndDate());
        }
        System.out.println("======day========");
        List<DateVo> betweenDates = getBetweenDates("2020-06-10", "2020-07-09");
        for (DateVo betweenDate : betweenDates) {
    
    
            System.out.println(betweenDate.getStartDate()+"===="+betweenDate.getEndDate());
        }
    }
}

Guess you like

Origin blog.csdn.net/qq_38893133/article/details/107336836