Java时间工具类(Date和LocalDateTime)

Date

在这里插入图片描述

package com.qiangesoft.utils.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期工具类
 *
 * @author lq
 * @date 2024-05-23
 */
public class DateUtil {

    public static final String[] CHINESE_WEEK_DAY = new String[]{"周一", "周二", "周三", "周四", "周五", "周六", "周日"};

    /**
     * 显示到日期
     */
    public static final String FORMAT_DATE = "yyyy-MM-dd";
    /**
     * 显示到小时
     */
    public static final String FORMAT_HOUR = "yyyy-MM-dd HH";
    /**
     * 显示到分
     */
    public static final String FORMAT_MINUTE = "yyyy-MM-dd HH:mm";
    /**
     * 显示到秒
     */
    public static final String FORMAT_SECOND = "yyyy-MM-dd HH:mm:ss";
    /**
     * 显示到毫秒
     */
    public static final String FORMAT_MILLISECOND = "yyyy-MM-dd HH:mm:ss:SSS";
    /**
     * 数字格式显示到日期
     */
    public static final String FORMAT_DATE_NUMBER = "yyyyMMdd";
    /**
     * 数字格式显示到小时
     */
    public static final String FORMAT_HOUR_NUMBER = "yyyyMMddHH";
    /**
     * 数字格式显示到分
     */
    public static final String FORMAT_MINUTE_NUMBER = "yyyyMMddHHmm";
    /**
     * 数字格式显示到秒
     */
    public static final String FORMAT_SECOND_NUMBER = "yyyyMMddHHmmss";
    /**
     * 数字格式显示到毫秒
     */
    public static final String FORMAT_MILLISECOND_NUMBER = "yyyyMMddHHmmssSSS";

    /**
     * 当前时间
     *
     * @return
     */
    public static Date now() {
        return new Date();
    }

    /**
     * 当日的开始时间
     *
     * @return
     */
    public static Date startOfDay() {
        return startOfDay(now());
    }

    /**
     * 某天的开始时间
     *
     * @param date
     * @return
     */
    public static Date startOfDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 当日的结束时间
     *
     * @return
     */
    public static Date endOfDay() {
        return endOfDay(now());
    }

    /**
     * 某天的结束时间
     *
     * @param date
     * @return
     */
    public static Date endOfDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }

    /**
     * 本周第几天
     *
     * @return
     */
    public static int dayOfWeek() {
        return dayOfWeek(now());
    }

    /**
     * 某周第几天
     *
     * @param date
     * @return
     */
    public static int dayOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int dayNum = calendar.get(Calendar.DAY_OF_WEEK);
        return dayNum == 1 ? 7 : dayNum - 1;
    }

    /**
     * 本周星期几
     *
     * @return
     */
    public static String dayNameOfWeek() {
        return dayNameOfWeek(now());
    }

    /**
     * 某周星期几
     *
     * @param date
     * @return
     */
    public static String dayNameOfWeek(Date date) {
        int dayNum = dayOfWeek(date);
        return CHINESE_WEEK_DAY[dayNum - 1];
    }

    /**
     * 本周的开始时间
     *
     * @return
     */
    public static Date startOfWeek() {
        return startOfWeek(now());
    }

    /**
     * 某周的开始时间
     *
     * @param date
     * @return
     */
    public static Date startOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 本周的结束时间
     *
     * @return
     */
    public static Date endOfWeek() {
        return endOfWeek(now());
    }

    /**
     * 某周的结束时间
     *
     * @param date
     * @return
     */
    public static Date endOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        calendar.add(Calendar.WEEK_OF_YEAR, 1);
        return calendar.getTime();
    }

    /**
     * 当月开始时间
     *
     * @return
     */
    public static Date startOfMonth() {
        return startOfMonth(now());
    }

    /**
     * 某月开始时间
     *
     * @param date
     * @return
     */
    public static Date startOfMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 当月结束时间
     *
     * @return
     */
    public static Date endOfMonth() {
        return endOfMonth(now());
    }

    /**
     * 某月结束时间
     *
     * @param date
     * @return
     */
    public static Date endOfMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }

    /**
     * 当年开始时间
     *
     * @return
     */
    public static Date startOfYear() {
        return startOfYear(now());
    }

    /**
     * 某年开始时间
     *
     * @param date
     * @return
     */
    public static Date startOfYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_YEAR, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 当年结束时间
     *
     * @return
     */
    public static Date endOfYear() {
        return endOfYear(now());
    }

    /**
     * 某年结束时间
     *
     * @param date
     * @return
     */
    public static Date endOfYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_YEAR, calendar.getActualMaximum(Calendar.DAY_OF_YEAR));
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 当日是否属于时间范围内
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public static Boolean between(Date startTime, Date endTime) {
        return between(now(), startTime, endTime);
    }

    /**
     * 时间范围内
     *
     * @param date
     * @param startTime
     * @param endTime
     * @return
     */
    public static Boolean between(Date date, Date startTime, Date endTime) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        Calendar start = Calendar.getInstance();
        start.setTime(startTime);
        Calendar end = Calendar.getInstance();
        end.setTime(endTime);
        return calendar.after(start) && calendar.before(end);
    }

    /**
     * 时间格式化
     *
     * @param date
     * @return
     */
    public static String format(Date date) {
        return format(date, FORMAT_SECOND);
    }

    /**
     * 时间格式化
     *
     * @param date
     * @param format
     * @return
     */
    public static String format(Date date, String format) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        return dateFormat.format(date);
    }

    /**
     * 字符串转时间
     *
     * @param date
     * @param format
     * @return
     */
    public static Date parse(String date, String format) throws ParseException {
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        return dateFormat.parse(date);
    }

    /**
     * 增加秒
     *
     * @param second
     * @return
     */
    public static Date addSecond(int second) {
        return addSecond(now(), second);
    }

    /**
     * 增加秒
     *
     * @param date
     * @param second
     * @return
     */
    public static Date addSecond(Date date, int second) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.SECOND, second);
        return calendar.getTime();
    }

    /**
     * 增加分钟
     *
     * @param minute
     * @return
     */
    public static Date addMinute(int minute) {
        return addMinute(now(), minute);
    }

    /**
     * 增加分钟
     *
     * @param date
     * @param minute
     * @return
     */
    public static Date addMinute(Date date, int minute) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MINUTE, minute);
        return calendar.getTime();
    }

    /**
     * 增加小时
     *
     * @param hour
     * @return
     */
    public static Date addHour(int hour) {
        return addHour(now(), hour);
    }

    /**
     * 增加小时
     *
     * @param date
     * @param hour
     * @return
     */
    public static Date addHour(Date date, int hour) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.HOUR, hour);
        return calendar.getTime();
    }

    /**
     * 增加天
     *
     * @param day
     * @return
     */
    public static Date addDay(int day) {
        return addDay(day);
    }

    /**
     * 增加天
     *
     * @param date
     * @param day
     * @return
     */
    public static Date addDay(Date date, int day) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, day);
        return calendar.getTime();
    }

    /**
     * 增加周
     *
     * @param week
     * @return
     */
    public static Date addWeek(int week) {
        return addWeek(now(), week);
    }

    /**
     * 增加周
     *
     * @param date
     * @param week
     * @return
     */
    public static Date addWeek(Date date, int week) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.WEEK_OF_YEAR, week);
        return calendar.getTime();
    }

    /**
     * 增加月
     *
     * @param month
     * @return
     */
    public static Date addMonth(int month) {
        return addMonth(now(), month);
    }

    /**
     * 增加月
     *
     * @param date
     * @param month
     * @return
     */
    public static Date addMonth(Date date, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, month);
        return calendar.getTime();
    }

    /**
     * 增加年
     *
     * @param year
     * @return
     */
    public static Date addYear(int year) {
        return addYear(now(), year);
    }

    /**
     * 增加年
     *
     * @param date
     * @param year
     * @return
     */
    public static Date addYear(Date date, int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.YEAR, year);
        return calendar.getTime();
    }

    /**
     * 减少秒
     *
     * @param second
     * @return
     */
    public static Date reduceSecond(int second) {
        return reduceSecond(now(), second);
    }

    /**
     * 减少秒
     *
     * @param date
     * @param second
     * @return
     */
    public static Date reduceSecond(Date date, int second) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.SECOND, -second);
        return calendar.getTime();
    }

    /**
     * 减少分钟
     *
     * @param minute
     * @return
     */
    public static Date reduceMinute(int minute) {
        return reduceMinute(now(), minute);
    }

    /**
     * 减少分钟
     *
     * @param date
     * @param minute
     * @return
     */
    public static Date reduceMinute(Date date, int minute) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MINUTE, -minute);
        return calendar.getTime();
    }

    /**
     * 减少小时
     *
     * @param hour
     * @return
     */
    public static Date reduceHour(int hour) {
        return reduceHour(now(), hour);
    }

    /**
     * 减少小时
     *
     * @param date
     * @param hour
     * @return
     */
    public static Date reduceHour(Date date, int hour) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.HOUR, -hour);
        return calendar.getTime();
    }

    /**
     * 减少天
     *
     * @param day
     * @return
     */
    public static Date reduceDay(int day) {
        return reduceDay(now(), day);
    }

    /**
     * 减少天
     *
     * @param date
     * @param day
     * @return
     */
    public static Date reduceDay(Date date, int day) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, -day);
        return calendar.getTime();
    }

    /**
     * 减少周
     *
     * @param week
     * @return
     */
    public static Date reduceWeek(int week) {
        return reduceWeek(now(), week);
    }

    /**
     * 减少周
     *
     * @param date
     * @param week
     * @return
     */
    public static Date reduceWeek(Date date, int week) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.WEEK_OF_YEAR, -week);
        return calendar.getTime();
    }

    /**
     * 减少月
     *
     * @param month
     * @return
     */
    public static Date reduceMonth(int month) {
        return reduceMonth(now(), month);
    }

    /**
     * 减少月
     *
     * @param date
     * @param month
     * @return
     */
    public static Date reduceMonth(Date date, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, -month);
        return calendar.getTime();
    }

    /**
     * 减少年
     *
     * @param year
     * @return
     */
    public static Date reduceYear(int year) {
        return reduceYear(now(), year);
    }

    /**
     * 减少年
     *
     * @param date
     * @param year
     * @return
     */
    public static Date reduceYear(Date date, int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.YEAR, -year);
        return calendar.getTime();
    }

    public static void main(String[] args) throws ParseException {
        Date now = now();

        System.out.println("现在时间:" + format(now));
        System.out.println("今天开始时间:" + format(startOfDay(now)));
        System.out.println("今天结束时间:" + format(endOfDay(now)));
        System.out.println("本周第几天:" + dayOfWeek(now));
        System.out.println("本周星期几:" + dayNameOfWeek(now));
        System.out.println("本周开始时间:" + format(startOfWeek(now)));
        System.out.println("本周结束时间:" + format(endOfWeek(now)));
        System.out.println("本月开始时间:" + format(startOfMonth(now)));
        System.out.println("本月结束时间:" + format(endOfMonth(now)));
        System.out.println("本年开始时间:" + format(startOfYear(now)));
        System.out.println("本年结束时间:" + format(endOfYear(now)));
        System.out.println("是否属于时间范围:" + between(reduceDay(now, 1), addDay(now, 2)));
        System.out.println("时间格式化:" + format(now, FORMAT_MINUTE));
        System.out.println("字符串转换时间:" + parse("2024-11-24 11:17:04", FORMAT_SECOND));
        System.out.println("现在时间加100秒:" + format(addSecond(now, 100)));
        System.out.println("现在时间加12分钟:" + format(addMinute(now, 12)));
        System.out.println("现在时间加2小时:" + format(addHour(now, 2)));
        System.out.println("现在时间加5天:" + format(addDay(now, 5)));
        System.out.println("现在时间加3周:" + format(addWeek(now, 3)));
        System.out.println("现在时间加6月:" + format(addMonth(now, 6)));
        System.out.println("现在时间加1年:" + format(addYear(now, 1)));
        System.out.println("现在时间减100秒:" + format(reduceSecond(now, 100)));
        System.out.println("现在时间减12分钟:" + format(reduceMinute(now, 12)));
        System.out.println("现在时间减2小时:" + format(reduceHour(now, 2)));
        System.out.println("现在时间减5天:" + format(reduceDay(now, 5)));
        System.out.println("现在时间减3周:" + format(reduceWeek(now, 3)));
        System.out.println("现在时间减6月:" + format(reduceMonth(now, 6)));
        System.out.println("现在时间减1年:" + format(reduceYear(now, 1)));
    }

}

LocalDateTime

在这里插入图片描述

package com.qiangesoft.utils.date;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;

/**
 * 日期工具类
 *
 * @author lq
 * @date 2024-05-23
 */
public class LocalDateUtil {

    public static final String[] CHINESE_WEEK_DAY = new String[]{"周一", "周二", "周三", "周四", "周五", "周六", "周日"};

    /**
     * 显示到日期
     */
    public static final String FORMAT_DATE = "yyyy-MM-dd";
    /**
     * 显示到小时
     */
    public static final String FORMAT_HOUR = "yyyy-MM-dd HH";
    /**
     * 显示到分
     */
    public static final String FORMAT_MINUTE = "yyyy-MM-dd HH:mm";
    /**
     * 显示到秒
     */
    public static final String FORMAT_SECOND = "yyyy-MM-dd HH:mm:ss";
    /**
     * 显示到毫秒
     */
    public static final String FORMAT_MILLISECOND = "yyyy-MM-dd HH:mm:ss:SSS";
    /**
     * 数字格式显示到日期
     */
    public static final String FORMAT_DATE_NUMBER = "yyyyMMdd";
    /**
     * 数字格式显示到小时
     */
    public static final String FORMAT_HOUR_NUMBER = "yyyyMMddHH";
    /**
     * 数字格式显示到分
     */
    public static final String FORMAT_MINUTE_NUMBER = "yyyyMMddHHmm";
    /**
     * 数字格式显示到秒
     */
    public static final String FORMAT_SECOND_NUMBER = "yyyyMMddHHmmss";
    /**
     * 数字格式显示到毫秒
     */
    public static final String FORMAT_MILLISECOND_NUMBER = "yyyyMMddHHmmssSSS";

    /**
     * 当前时间
     *
     * @return
     */
    public static LocalDateTime now() {
        return LocalDateTime.now();
    }

    /**
     * 当日的开始时间
     *
     * @return
     */
    public static LocalDateTime startOfDay() {
        return now().toLocalDate().atStartOfDay();
    }

    /**
     * 某天的开始时间
     *
     * @param date
     * @return
     */
    public static LocalDateTime startOfDay(LocalDateTime date) {
        return date.toLocalDate().atStartOfDay();
    }

    /**
     * 当日的结束时间
     *
     * @return
     */
    public static LocalDateTime endOfDay() {
        return now().toLocalDate().atTime(LocalTime.MAX);
    }

    /**
     * 某天的结束时间
     *
     * @param date
     * @return
     */
    public static LocalDateTime endOfDay(LocalDateTime date) {
        return date.toLocalDate().atTime(LocalTime.MAX);
    }

    /**
     * 本周第几天
     *
     * @return
     */
    public static int dayOfWeek() {
        return dayOfWeek(now());
    }

    /**
     * 某周第几天
     *
     * @param date
     * @return
     */
    public static int dayOfWeek(LocalDateTime date) {
        DayOfWeek dayOfWeek = date.getDayOfWeek();
        return dayOfWeek.getValue();
    }

    /**
     * 本周星期几
     *
     * @return
     */
    public static String dayNameOfWeek() {
        return dayNameOfWeek(now());
    }

    /**
     * 某周星期几
     *
     * @param date
     * @return
     */
    public static String dayNameOfWeek(LocalDateTime date) {
        int dayNum = dayOfWeek(date);
        return CHINESE_WEEK_DAY[dayNum - 1];
    }

    /**
     * 本周开始时间
     *
     * @return
     */
    public static LocalDateTime startOfWeek() {
        return startOfWeek(now());
    }

    /**
     * 某周开始时间
     *
     * @param date
     * @return
     */
    public static LocalDateTime startOfWeek(LocalDateTime date) {
        return date.minusDays(date.getDayOfWeek().getValue() - 1).toLocalDate().atStartOfDay();
    }

    /**
     * 本周结束时间
     *
     * @return
     */
    public static LocalDateTime endOfWeek() {
        return endOfWeek(now());
    }

    /**
     * 某周结束时间
     *
     * @param date
     * @return
     */
    public static LocalDateTime endOfWeek(LocalDateTime date) {
        return LocalDateTime.of(LocalDate.from(date.plusDays(8 - date.getDayOfWeek().getValue())), LocalTime.MAX);
    }

    /**
     * 当月开始时间
     *
     * @return
     */
    public static LocalDateTime startOfMonth() {
        return startOfMonth(now());
    }

    /**
     * 某月开始时间
     *
     * @param date
     * @return
     */
    public static LocalDateTime startOfMonth(LocalDateTime date) {
        return date.toLocalDate().with(TemporalAdjusters.firstDayOfMonth()).atTime(LocalTime.MIN);
    }

    /**
     * 当月结束时间
     *
     * @return
     */
    public static LocalDateTime endOfMonth() {
        return endOfMonth(now());
    }

    /**
     * 某月结束时间
     *
     * @param date
     * @return
     */
    public static LocalDateTime endOfMonth(LocalDateTime date) {
        return date.toLocalDate().with(TemporalAdjusters.lastDayOfMonth()).atTime(LocalTime.MAX);
    }

    /**
     * 当年开始时间
     *
     * @return
     */
    public static LocalDateTime startOfYear() {
        return startOfYear(now());
    }

    /**
     * 某年开始时间
     *
     * @param date
     * @return
     */
    public static LocalDateTime startOfYear(LocalDateTime date) {
        return date.toLocalDate().with(TemporalAdjusters.firstDayOfYear()).atTime(LocalTime.MIN);
    }

    /**
     * 当年结束时间
     *
     * @return
     */
    public static LocalDateTime endOfYear() {
        return endOfYear(now());
    }

    /**
     * 某年结束时间
     *
     * @param date
     * @return
     */
    public static LocalDateTime endOfYear(LocalDateTime date) {
        return date.toLocalDate().with(TemporalAdjusters.lastDayOfYear()).atTime(LocalTime.MAX);
    }

    /**
     * 当日是否属于时间范围内
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public static Boolean between(LocalDateTime startTime, LocalDateTime endTime) {
        return between(now(), startTime, endTime);
    }

    /**
     * 时间范围内
     *
     * @param date
     * @param startTime
     * @param endTime
     * @return
     */
    public static Boolean between(LocalDateTime date, LocalDateTime startTime, LocalDateTime endTime) {
        return date.isAfter(startTime) && date.isBefore(endTime);
    }

    /**
     * 时间格式化
     *
     * @param date
     * @return
     */
    public static String format(LocalDateTime date) {
        return format(date, FORMAT_SECOND);
    }

    /**
     * 时间格式化
     *
     * @param date
     * @param format
     * @return
     */
    public static String format(LocalDateTime date, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return date.format(formatter);
    }

    /**
     * 字符串转换时间
     *
     * @param date
     * @param format
     * @return
     */
    public static LocalDateTime parse(String date, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return LocalDateTime.parse(date, formatter);
    }

    /**
     * 增加秒
     *
     * @param second
     * @return
     */
    public static LocalDateTime addSecond(int second) {
        return addSecond(now(), second);
    }

    /**
     * 增加秒
     *
     * @param date
     * @param second
     * @return
     */
    public static LocalDateTime addSecond(LocalDateTime date, int second) {
        return date.plusSeconds(second);
    }

    /**
     * 增加分钟
     *
     * @param minute
     * @return
     */
    public static LocalDateTime addMinute(int minute) {
        return addMinute(now(), minute);
    }

    /**
     * 增加分钟
     *
     * @param date
     * @param minute
     * @return
     */
    public static LocalDateTime addMinute(LocalDateTime date, int minute) {
        return date.plusMinutes(minute);
    }

    /**
     * 增加小时
     *
     * @param hour
     * @return
     */
    public static LocalDateTime addHour(int hour) {
        return addHour(now(), hour);
    }

    /**
     * 增加小时
     *
     * @param date
     * @param hour
     * @return
     */
    public static LocalDateTime addHour(LocalDateTime date, int hour) {
        return date.plusHours(hour);
    }

    /**
     * 增加天
     *
     * @param day
     * @return
     */
    public static LocalDateTime addDay(int day) {
        return addDay(now(), day);
    }

    /**
     * 增加天
     *
     * @param date
     * @param day
     * @return
     */
    public static LocalDateTime addDay(LocalDateTime date, int day) {
        return date.plusDays(day);
    }

    /**
     * 增加周
     *
     * @param week
     * @return
     */
    public static LocalDateTime addWeek(int week) {
        return addWeek(now(), week);
    }

    /**
     * 增加周
     *
     * @param date
     * @param week
     * @return
     */
    public static LocalDateTime addWeek(LocalDateTime date, int week) {
        return date.plusWeeks(week);
    }

    /**
     * 增加月
     *
     * @param month
     * @return
     */
    public static LocalDateTime addMonth(int month) {
        return addMonth(now(), month);
    }

    /**
     * 增加月
     *
     * @param date
     * @param month
     * @return
     */
    public static LocalDateTime addMonth(LocalDateTime date, int month) {
        return date.plusMonths(month);
    }

    /**
     * 增加年
     *
     * @param year
     * @return
     */
    public static LocalDateTime addYear(int year) {
        return addYear(now(), year);
    }

    /**
     * 增加年
     *
     * @param date
     * @param year
     * @return
     */
    public static LocalDateTime addYear(LocalDateTime date, int year) {
        return date.plusYears(year);
    }

    /**
     * 减少秒
     *
     * @param second
     * @return
     */
    public static LocalDateTime reduceSecond(int second) {
        return reduceSecond(now(), second);
    }

    /**
     * 减少秒
     *
     * @param date
     * @param second
     * @return
     */
    public static LocalDateTime reduceSecond(LocalDateTime date, int second) {
        return date.minusSeconds(second);
    }

    /**
     * 减少分钟
     *
     * @param minute
     * @return
     */
    public static LocalDateTime reduceMinute(int minute) {
        return reduceMinute(now(), minute);
    }

    /**
     * 减少分钟
     *
     * @param date
     * @param minute
     * @return
     */
    public static LocalDateTime reduceMinute(LocalDateTime date, int minute) {
        return date.minusMinutes(minute);
    }

    /**
     * 减少小时
     *
     * @param hour
     * @return
     */
    public static LocalDateTime reduceHour(int hour) {
        return reduceHour(now(), hour);
    }

    /**
     * 减少小时
     *
     * @param date
     * @param hour
     * @return
     */
    public static LocalDateTime reduceHour(LocalDateTime date, int hour) {
        return date.minusHours(hour);
    }

    /**
     * 减少天
     *
     * @param day
     * @return
     */
    public static LocalDateTime reduceDay(int day) {
        return reduceDay(now(), day);
    }

    /**
     * 减少天
     *
     * @param date
     * @param day
     * @return
     */
    public static LocalDateTime reduceDay(LocalDateTime date, int day) {
        return date.minusDays(day);
    }

    /**
     * 减少周
     *
     * @param week
     * @return
     */
    public static LocalDateTime reduceWeek(int week) {
        return reduceWeek(now(), week);
    }

    /**
     * 减少周
     *
     * @param date
     * @param week
     * @return
     */
    public static LocalDateTime reduceWeek(LocalDateTime date, int week) {
        return date.minusWeeks(week);
    }

    /**
     * 减少月
     *
     * @param month
     * @return
     */
    public static LocalDateTime reduceMonth(int month) {
        return reduceMonth(now(), month);
    }

    /**
     * 减少月
     *
     * @param date
     * @param month
     * @return
     */
    public static LocalDateTime reduceMonth(LocalDateTime date, int month) {
        return date.minusMonths(month);
    }

    /**
     * 减少年
     *
     * @param year
     * @return
     */
    public static LocalDateTime reduceYear(int year) {
        return reduceYear(now(), year);
    }

    /**
     * 减少年
     *
     * @param date
     * @param year
     * @return
     */
    public static LocalDateTime reduceYear(LocalDateTime date, int year) {
        return date.minusYears(year);
    }

    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();

        System.out.println("现在时间:" + format(now));
        System.out.println("今天开始时间:" + format(startOfDay(now)));
        System.out.println("今天结束时间:" + format(endOfDay(now)));
        System.out.println("本周第几天:" + dayOfWeek(now));
        System.out.println("本周星期几:" + dayNameOfWeek(now));
        System.out.println("本周开始时间:" + format(startOfWeek(now)));
        System.out.println("本周结束时间:" + format(endOfWeek(now)));
        System.out.println("本月开始时间:" + format(startOfMonth(now)));
        System.out.println("本月结束时间:" + format(endOfMonth(now)));
        System.out.println("本年开始时间:" + format(startOfYear(now)));
        System.out.println("本年结束时间:" + format(endOfYear(now)));
        System.out.println("是否属于时间范围:" + between(reduceDay(now, 1), addDay(now, 2)));
        System.out.println("时间格式化:" + format(now, FORMAT_MINUTE));
        System.out.println("字符串转换时间:" + parse("2024-11-24 11:17:04", FORMAT_SECOND));
        System.out.println("现在时间加100秒:" + format(addSecond(now, 100)));
        System.out.println("现在时间加12分钟:" + format(addMinute(now, 12)));
        System.out.println("现在时间加2小时:" + format(addHour(now, 2)));
        System.out.println("现在时间加5天:" + format(addDay(now, 5)));
        System.out.println("现在时间加3周:" + format(addWeek(now, 3)));
        System.out.println("现在时间加6月:" + format(addMonth(now, 6)));
        System.out.println("现在时间加1年:" + format(addYear(now, 1)));
        System.out.println("现在时间减100秒:" + format(reduceSecond(now, 100)));
        System.out.println("现在时间减12分钟:" + format(reduceMinute(now, 12)));
        System.out.println("现在时间减2小时:" + format(reduceHour(now, 2)));
        System.out.println("现在时间减5天:" + format(reduceDay(now, 5)));
        System.out.println("现在时间减3周:" + format(reduceWeek(now, 3)));
        System.out.println("现在时间减6月:" + format(reduceMonth(now, 6)));
        System.out.println("现在时间减1年:" + format(reduceYear(now, 1)));
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/637547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue从入门到精通(四):MVVM模型

一,MVVM MVVM(Model–view–viewmodel)是一种软件架构模式。MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑(数据模型)的开发分离开来。详见MVVM 二,Vue中的MVVM Vue虽然没有完全遵循 MVVM 模型,但是 Vue 的设…

nacos-opera(k8s)安装问题解决

整理一些关于k8s部署nacos出现的一些恶心的问题 网上说其他说的更改数据库连接都未解决。 在用nacos-opera想安装高可用nacos时连接mysql数据库报错: 报错具体项: No DataSource set 具体就是说没找到数据源。 第一个 检查一下nacos连接数据库配置 : 第二个 检查一下数据库…

2024 电工杯高校数学建模竞赛(B题)| 平衡膳食食谱 |建模秘籍文章代码思路大全

铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,运用负载均衡,多目标规划等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。 抓紧小秘籍&am…

【MySQL数据库】CRUD 增 删 改 查 超详解,有这一篇就够了!

​ ​ 🔥个人主页: 中草药 🔥专栏:【MySQL】探秘:数据库世界的瑞士军刀 目录 ⚗️一.CRUD 🧪二.新增(Create) 🧫1.基本操作 🧬2.使用SELECT插入 &#x…

169. Majority Element

文章目录 题目描述(简单难度)解法一解法二 位运算摩尔投票法参考文献 题目描述(简单难度) 给一个数组,存在一个数字超过了半数,找出这个数。 解法一 这种计数问题,直接就会想到 HashMap,遍历过程中统计每个数字出现的个数即可。…

Python入门全系列教程(更新中……)

最近辞职了,有点时间,打算写一套Python入门的全系列教程,需要的人欢迎关注蹲守!!! 【Python基础篇】:入门基础知识—轻松踏上编程巅峰!" 【Python基础篇】—基本语句详解 【Py…

jenkins插件之xunit

分析测试工具执行的结果,并图形化,比如phpunit,phpstan,可分析junit格式的结果 安装jenkins插件 搜索xunit并安装 项目配置 配置 - Build Steps 您的项目 - 配置 - Build Steps, 新增 Run with timeout 超时时间根据实际情况配置 Build…

unidbg入门笔记

一、unidbg 介绍 unidbg 是凯神 在 2019 年初开源的一个轻量级模拟器,一个基于Java的跨平台解密引擎,专门用于动态分析和逆向工程应用程序。它可以模拟不同CPU架构、操作系统和指令集,从而使用户能够在一个统一的环境中分析各种不同类型的二…

Mac下QT开发环境搭建详细教程

QT Qt是一个跨平台的C应用程序框架,用于开发具有图形用户界面(GUI)的应用程序,同时也可用于开发非GUI程序,比如控制台工具和服务器。Qt是设计成通用、可移植和高效的,它广泛应用于全球的企业和开发者社区中…

Codigger编码场景介绍(二):驾驶舱场景(Cockpit)

Codigger,一个专为开发人员设计的工具,致力于为不同的开发场景提供最佳的切换体验。Codigger囊括了多种场景,如传统场景、调试场景、设计器场景、驾驶舱场景以及纯净场景等。在上一篇文章中,我们介绍了传统场景模式,今…

宠物空气净化器:过敏星人的终极武器,让猫毛无处藏身~

猫毛过敏者虽畏惧猫毛,但对猫的热爱让他们选择继续养猫。过敏反应通常由猫的皮屑、唾液和尿液中的蛋白质引发,这些颗粒在空气中传播,导致打喷嚏、咳嗽和皮肤红疹等症状。宠物空气净化器,专为去除猫毛、异味和消毒灭菌设计&#xf…

【Vue3】env环境变量的配置和使用(区分cli和vite)

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、env文件二、vue3cli加载env1..env配置2..dev配置(其他环境参考)3.package.json文件4.使用 三、vue3vite加载e…

AI图片过拟合如何处理?答案就在其中!

遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答8 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你解…

STM32-按键控制LED

接上篇LED点亮;http://t.csdnimg.cn/9r6z7 目录 一.硬件设计 二.软件设计 三.完整代码 四.结束语 一.硬件设计 按钮接电源插入PB0引脚,如上图所示 二.软件设计 void key_init() {GPIO_InitTypeDef GPIO_InitStruct;//使能时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-19.1讲 串口格式化输出printf

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

JVM(5):虚拟机性能分析和故障解决工具概述

1 工具概述 作为一个java程序员,最基本的要求就是用java语言编写程序,并能够在jvm虚拟机上正常运行,但是在实际开发过程中,我们所有的程序由于各种各样的原因,并不是总能够正常运行,经常会发生故障或者程序…

cocos 写 连连看 小游戏主要逻辑(Ts编写)算法总结

cocos官方文档:节点系统事件 | Cocos Creator 游戏界面展示 一、在cocos编译器随便画个页面 展示页面 二、连连看元素生成 2.1、准备单个方块元素,我这里就是直接使用一张图片,图片大小为100x100,描点围为(0&#xf…

某钢铁企业数字化转型规划案例(114页PPT)

案例介绍: 该钢铁企业的数字化转型案例表明,数字化转型是钢铁企业应对市场竞争、提高生产效率、降低成本、优化资源配置和降低能耗排放的重要手段。通过引入先进的技术和管理理念,加强员工培训和人才引进,企业可以成功实现数字化…

数据挖掘实战-基于内容协同过滤算法的电影推荐系统

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

轻松上手ClickHouse:ClickHouse入门

引言 在数字化时代,大数据处理和分析已经成为了各行各业不可或缺的一环。而ClickHouse,作为一款高性能的列式数据库管理系统,以其卓越的查询性能和灵活的扩展性,赢得了众多企业和开发者的青睐。本文将带领大家走进ClickHouse的世…