How to get 30 days or a certain range of dates in JAVA

JAVA's method of obtaining 30 days or a certain range of dates is frequently used in projects.

public class Main {
    
    
    public static void main(String[] args) {
    
    
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate now = LocalDate.now();
        List<String> dateList = new ArrayList<>();
        for (int i = 0; i < 30; i++) {
    
    
            LocalDate date = now.minusDays(i);
            String formattedDate = date.format(formatter);
            dateList.add(formattedDate);
        }
        System.out.println(dateList);
    }
}

This example uses the LocalDate class and DateTimeFormatter class from Java 8 to handle date formatting. First, we create a formatter object to define the date format (for example: "yyyy-MM-dd"). Then, we get the current date and create an empty list to store the date string.

Next, we use a loop to generate dates for the last 30 days. On each iteration, we take the current date, subtract i days, and format it into a string in the specified format. Finally, we add each string to the list of dates.

Finally, we output a list of dates to verify the results.

More detailed format:
There is a class library for calendar representation in Java –> LocalDate class.
If you only want the specified year, month and day, you can use this LocalDate class.
static LocalDate now() constructs an object representing the current date

static LocalDate of(int year, int month, int day) Constructs an object that identifies the given date

int getYear()/int getMonthValue()/int getDayOfMonth() Get the year, month and day of the current date.

DayOfWeek getDayOfWeek gets the day of the week of the current date and returns it as an instance of the DayOf class. Call getValue to get a number between 1 and 7, indicating the day of the week. 1 means Monday and 7 means Sunday.

LocalDate plusDays(int n) generates a date n days after the current date

LocalDate minusDays(int n) generates the date n days before the current date

pack
age com.javademo;
 
 
import java.time.LocalDate;
 
public class Main {
    
    
 
    public static void main(String[] args) {
    
    
        //获取前30天的日期
        LocalDate date1 = LocalDate.now().minusDays(30);
        //获取后30天的日期
        LocalDate date2 = LocalDate.now().plusDays(30);
        //获取前2周的日期
        LocalDate date3= LocalDate.now().minusWeeks(2);
        //获取后2周的日期
        LocalDate date4= LocalDate.now().plusWeeks(2);
        //获取前2月的日期
        LocalDate date5= LocalDate.now().minusMonths(2);
        //获取后2月的日期
        LocalDate date6= LocalDate.now().plusMonths(2);
        //获取前2年的日期
        LocalDate date7= LocalDate.now().minusYears(2);
        //获取后2年的日期
        LocalDate date8= LocalDate.now().plusYears(2);
        //打印
        System.out.println(date1.toString());
        System.out.println(date2.toString());
        System.out.println(date3.toString());
        System.out.println(date4.toString());
        System.out.println(date5.toString());
        System.out.println(date6.toString());
        System.out.println(date7.toString());
        System.out.println(date8.toString());
    }
}

Insert image description here

Java gets the previous year, next year, last month, next month, previous day, today, this week, last week, this quarter, last quarter, etc. of the current time (time formatting)

开始时间
public static String min = " 00:00:00";
结束时间
public static String max = " 59:59:59";
 public static void main(String[] args) throws Exception {
    
    
        //自定义时间
        System.out.println("当前天的开始"+getStartOrEndDayOfDay("2023-01-01",0,true));
        System.out.println("当前天的结束"+getStartOrEndDayOfDay("2023-01-01",0,false));
        System.out.println("当前天前一天的开始"+getStartOrEndDayOfDay("2023-01-01",-1,true));
        System.out.println("当前天前一天的结束"+getStartOrEndDayOfDay("2023-01-01",-1,false));
        System.out.println();
        System.out.println();
        System.out.println("当前周的开始"+getStartOrEndDayOfWeek("2023-01-01",0,true));
        System.out.println("当前周的结束"+getStartOrEndDayOfWeek("2023-01-01",0,false));
        System.out.println("当前周前一周的开始"+getStartOrEndDayOfWeek("2023-01-01",-1,true));
        System.out.println("当前周前一周的结束"+getStartOrEndDayOfWeek("2023-01-01",-1,false));
        System.out.println();
        System.out.println();
        System.out.println("当前月的开始"+getStartOrEndDayOfMonth("2023-01-01",0,true));
        System.out.println("当前月的结束"+getStartOrEndDayOfMonth("2023-01-01",0,false));
        System.out.println("当前月前一月的开始"+getStartOrEndDayOfMonth("2023-01-01",-1,true));
        System.out.println("当前月前一月的结束"+getStartOrEndDayOfMonth("2023-01-01",-1,false));
        System.out.println();
        System.out.println();
        System.out.println("当前季度的开始"+getStartOrEndDayOfQuarter("2023-01-01",0,true));
        System.out.println("当前季度的结束"+getStartOrEndDayOfQuarter("2023-01-01",0,false));
        System.out.println("当前季度前一季度的开始"+getStartOrEndDayOfQuarter("2023-01-01",-1,true));
        System.out.println("当前季度前一季度的结束"+getStartOrEndDayOfQuarter("2023-01-01",-1,false));
        System.out.println();
        System.out.println();
        System.out.println("当前年的开始"+getStartOrEndDayOfYear("2023-01-01",0,true));
        System.out.println("当前年的结束"+getStartOrEndDayOfYear("2023-01-01",0,false));
        System.out.println("当前年前一年的开始"+getStartOrEndDayOfYear("2023-01-01",-1,true));
        System.out.println("当前年前一年的结束"+getStartOrEndDayOfYear("2023-01-01",-1,false));
        //默认时间
       System.out.println("当前天的开始"+getStartOrEndDayOfDay(LocalDate.now(),0,true));
        System.out.println("当前天的结束"+getStartOrEndDayOfDay(LocalDate.now(),0,false));
        System.out.println("当前天前一天的开始"+getStartOrEndDayOfDay(LocalDate.now(),-1,true));
        System.out.println("当前天前一天的结束"+getStartOrEndDayOfDay(LocalDate.now(),-1,false));
        System.out.println();
        System.out.println();
        System.out.println("当前周的开始"+getStartOrEndDayOfWeek(LocalDate.now(),0,true));
        System.out.println("当前周的结束"+getStartOrEndDayOfWeek(LocalDate.now(),0,false));
        System.out.println("当前周前一周的开始"+getStartOrEndDayOfWeek(LocalDate.now(),-1,true));
        System.out.println("当前周前一周的结束"+getStartOrEndDayOfWeek(LocalDate.now()",-1,false));
        System.out.println();
        System.out.println();
        System.out.println("当前月的开始"+getStartOrEndDayOfMonth(LocalDate.now(),0,true));
        System.out.println("当前月的结束"+getStartOrEndDayOfMonth(LocalDate.now(),0,false));
        System.out.println("当前月前一月的开始"+getStartOrEndDayOfMonth(LocalDate.now(),-1,true));
        System.out.println("当前月前一月的结束"+getStartOrEndDayOfMonth(LocalDate.now(),-1,false));
        System.out.println();
        System.out.println();
        System.out.println("当前季度的开始"+getStartOrEndDayOfQuarter(LocalDate.now(),0,true));
        System.out.println("当前季度的结束"+getStartOrEndDayOfQuarter(LocalDate.now(),0,false));
        System.out.println("当前季度前一季度的开始"+getStartOrEndDayOfQuarter(LocalDate.now(),-1,true));
        System.out.println("当前季度前一季度的结束"+getStartOrEndDayOfQuarter(LocalDate.now(),-1,false));
        System.out.println();
        System.out.println();
        System.out.println("当前年的开始"+getStartOrEndDayOfYear(LocalDate.now(),0,true));
        System.out.println("当前年的结束"+getStartOrEndDayOfYear(LocalDate.now(),0,false));
        System.out.println("当前年前一年的开始"+getStartOrEndDayOfYear(LocalDate.now(),-1,true));
        System.out.println("当前年前一年的结束"+getStartOrEndDayOfYear(LocalDate.now(),-1,false));
    }

    /**
     * 获取天 第一天或最后一天
     * @param weeks 0本周,1下周,-1上周 以此类推
     * @param isFirst true获取开始时间 false获取结束时间
     * @return java.lang.String
     */
    public static String getStartOrEndDayOfDay(String today,long weeks, Boolean isFirst){
    
    
        LocalDate time = LocalDate.parse(today, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        LocalDate resDate = time.plusDays(weeks);
        String date;
        if (isFirst) {
    
    
             date =LocalDate.of(resDate.getYear(),resDate.getMonth(),resDate.getDayOfMonth())+min;
        } else {
    
    
             date =LocalDate.of(resDate.getYear(),resDate.getMonth(),resDate.getDayOfMonth())+max;
        }
        return date;
    }


    /**
     * 获取周 第一天或最后一天
     * @param weeks 0本周,1下周,-1上周 以此类推
     * @param isFirst true获取开始时间 false获取结束时间
     * @return java.lang.String
     */
    public static String getStartOrEndDayOfWeek(String today,long weeks, Boolean isFirst){
    
    
        LocalDate time = LocalDate.parse(today, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        LocalDate resDate = time.plusWeeks(weeks);
        DayOfWeek week = resDate.getDayOfWeek();
        int value = week.getValue();
        String date;
        if (isFirst) {
    
    
            date =resDate.minusDays(value - 1)+min;
        } else {
    
    
            date =resDate.plusDays(7 - value)+max;
        }
        return date;
    }


    /**
     * 获取月份 第一天或最后一天
     * @param months 0本月,1下月,-1上月 以此类推
     * @param isFirst true获取开始时间 false获取结束时间
     * @return java.lang.String
     */
    public static String getStartOrEndDayOfMonth(String today,long months, Boolean isFirst){
    
    
        LocalDate time = LocalDate.parse(today, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        LocalDate resDate = time.plusMonths(months);
        Month month = resDate.getMonth();
        int length = month.length(resDate.isLeapYear());
        String date;
        if (isFirst) {
    
    
            date =LocalDate.of(resDate.getYear(), month, 1)+min;
        } else {
    
    
            date =LocalDate.of(resDate.getYear(), month, length)+max;
        }
        return date;
    }




    /**
     * 获取季度 第一天或最后一天
     * @param quarters 0本季度,1下季度,-1上季度 以此类推
     * @param isFirst true获取开始时间 false获取结束时间
     * @return java.lang.String
     */
    public static String getStartOrEndDayOfQuarter(String today,long quarters, Boolean isFirst){
    
    
        LocalDate time = LocalDate.parse(today, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        LocalDate resDate = time.plusMonths(quarters * 3);
        Month month = resDate.getMonth();
        Month firstMonthOfQuarter = month.firstMonthOfQuarter();
        Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
        String date;
        if (isFirst) {
    
    
            date =LocalDate.of(resDate.getYear(), firstMonthOfQuarter, 1)+min;
        } else {
    
    
            date =LocalDate.of(resDate.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(resDate.isLeapYear()))+max;
        }
        return date;
    }



    /**
     * 获取年份 第一天或最后一天
     * @param years 0本今年,1明年,-1去年 以此类推
     * @param isFirst true获取开始时间 false获取结束时间
     * @return java.lang.String
     */
    public static String getStartOrEndDayOfYear(String today,long years, Boolean isFirst){
    
    
        LocalDate time = LocalDate.parse(today, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        LocalDate resDate = time.plusYears(years);
        String date;
        if (isFirst) {
    
    
            date = LocalDate.of(resDate.getYear(), Month.JANUARY, 1)+min;;
        } else {
    
    
            date = LocalDate.of(resDate.getYear(), Month.DECEMBER, Month.DECEMBER.length(resDate.isLeapYear()))+max;
        }
        return date;
    }

Guess you like

Origin blog.csdn.net/zhangchen124/article/details/133941867