[JAVA]--基于LocalDateTime编写的日期工具类

package com.wnn.myweb.utils;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @ClassName: DateUtil
 * @Author: wnn
 * @Description: 日期工具类--基于LocalDateTime
 * @Date: 2022/8/2 17:14
 */
public class DateUtil {

    private static LocalDateTime ldt = LocalDateTime.now();//当前日期

    //获取当前日期   格式:yyyy-MM-dd、yyyy-MM-dd HH:mm:ss、yy-MM-dd、yyyyMMdd等
    public static String getCurrentDate(String pattern) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
        String result = dtf.format(ldt);//格式化日期
        return result;
    }

    //获取当前日期的前n天或后n天 :num>0表现获取以后的日期,num<0表示获取以前的日期;pattern 日期格式
    public static String getBeforeOrAfterDays(int num, String pattern) {
        LocalDateTime localDateTime = null;
        if (num >= 0) {
            localDateTime = ldt.plusDays(num);
        } else {
            localDateTime = ldt.minusDays(Math.abs(num));
        }
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
        String result = dtf.format(localDateTime);
        return result;
    }

    //获取当前日期的前n月或后n月 :num>0表现获取以后的日期,num<0表示获取以前的日期;pattern 日期格式
    public static String getBeforeOrAfterMonths(int num, String pattern) {
        LocalDateTime localDateTime = null;
        if (num >= 0) {
            localDateTime = ldt.plusMonths(num);
        } else {
            localDateTime = ldt.minusMonths(Math.abs(num));
        }
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
        String result = dtf.format(localDateTime);
        return result;
    }

    //计算两个日期相差多少天 :输入日期格式必须为yyyy-MM-dd
    public static long daysDiff(String beforeDate, String afterDate) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate parse1 = LocalDate.parse(beforeDate, dtf);
        LocalDate parse2 = LocalDate.parse(afterDate, dtf);
        long dayse = parse2.toEpochDay() - parse1.toEpochDay();
        return dayse;
    }

    //获取当前日期是星期几,返回格式为周三
    public static String getWhatDay() {
        int value = ldt.getDayOfWeek().getValue();
        return "星期" + formatDaysOfWeek(value);
    }

    //获取输入的日期是星期几:  输入日期格式必须为yyyy-MM-dd
    public static String getWhatDayInputDate(String date) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate parse = LocalDate.parse(date, dtf);
        int value = parse.getDayOfWeek().getValue();
        return "星期" + formatDaysOfWeek(value);
    }

    //格式化周几 将数字转为汉字
    public static String formatDaysOfWeek(int value) {
        String daysOfWeek = "";
        switch (value) {
            case 1:
                daysOfWeek = "一";
                break;
            case 2:
                daysOfWeek = "二";
                break;
            case 3:
                daysOfWeek = "三";
                break;
            case 4:
                daysOfWeek = "四";
                break;
            case 5:
                daysOfWeek = "五";
                break;
            case 6:
                daysOfWeek = "六";
                break;
            case 7:
                daysOfWeek = "七";
                break;
        }
        return daysOfWeek;
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_44431073/article/details/126157771