| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- package com.ydtech.modules.order.utils;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- import java.time.*;
- import java.time.format.DateTimeFormatter;
- /**
- * @description: 保司 处理时间 工具类
- * @author: wenks
- * @date: 2025/3/5 10:30
- **/
- public final class TimeProcessing {
- private TimeProcessing() {
- throw new IllegalStateException("Utility class");
- }
- public static final DateTimeFormatter DATE_TIME_FORMATTER;
- static {
- DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- }
- public static final DateTimeFormatter DATE_FORMATTER;
- static {
- DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
- }
- public static final long ONE = 1L;
- public static LocalDateTime parseDateTime(String date) {
- return LocalDateTime.parse(date, DATE_TIME_FORMATTER);
- }
- public static LocalDate parseDate(String date) {
- return LocalDate.parse(date, DATE_FORMATTER);
- }
- /**
- * 时间格式转换
- * yyyy-MM-dd 转 yyyy-MM-dd HH:mm:ss
- *
- * @param date yyyy-MM-dd
- * @return yyyy-MM-dd HH:mm:ss
- */
- public static String dateToDateTime(String date) {
- return LocalDateTime.of(LocalDate.parse(date, DATE_FORMATTER), LocalTime.MIN).format(DATE_TIME_FORMATTER);
- }
- public static String dateToDateTimeMax(String date) {
- return LocalDateTime.of(LocalDate.parse(date, DATE_FORMATTER), LocalTime.MAX).format(DATE_TIME_FORMATTER);
- }
- public static String dateTimeToDate(String dateTime) {
- return LocalDateTime.parse(dateTime, DATE_TIME_FORMATTER).format(DATE_FORMATTER);
- }
- /**
- * 一年以后减1秒得时间 (适用于零点时)
- *
- * @param date 开始时间
- * @return 结束时间
- */
- public static String minusOneSecondAfterYear(String date) {
- return plusOneYear(date).minusSeconds(ONE).format(DATE_TIME_FORMATTER);
- }
- /**
- * 一年以后减1天得时间 (适用于不是零点时)
- *
- * @param date 开始时间
- * @return 结束时间
- */
- public static String minusOneDayAfterYear(String date) {
- return plusOneYear(date).minusDays(ONE).minusSeconds(ONE).format(DATE_TIME_FORMATTER);
- }
- /**
- * 一年以后得时间
- *
- * @param date 开始时间
- * @return 结束时间
- */
- public static LocalDateTime plusOneYear(String date) {
- return parseDateTime(date).plusYears(ONE);
- }
- /**
- * 一年以后得时间
- *
- * @param date 开始时间
- * @return 结束时间
- */
- public static String plusOneYearToString(String date) {
- return plusOneYear(date).format(DATE_TIME_FORMATTER);
- }
- /**
- * 几天之前
- *
- * @param date 时间
- * @param days 天数
- * @return
- */
- public static String minusDays(String date, long days) {
- LocalDate parse = LocalDate.parse(date);
- return parse.minusDays(days).format(DATE_FORMATTER);
- }
- /**
- * 几天后
- *
- * @param date 时间
- * @param days 天数
- * @return
- */
- public static String plusDays(String date, long days) {
- LocalDate parse = LocalDate.parse(date);
- return parse.plusDays(days).format(DATE_FORMATTER);
- }
- /**
- * 今天的日期
- *
- * @return
- */
- public static String nowDate() {
- return LocalDate.now().format(DATE_FORMATTER);
- }
- public static String nowDateTime() {
- return LocalDateTime.now().format(DATE_TIME_FORMATTER);
- }
- /**
- * 明天的 整点日期
- * @param time
- * @return
- */
- public static String tomorrowDateTime(String time) {
- // 解析传入的时间字符串
- LocalDateTime localDateTime = LocalDateTime.parse(time, DATE_TIME_FORMATTER);
- // 加1天,并设置为 00:00:00
- return localDateTime.plusDays(1)
- .toLocalDate()
- .atStartOfDay()
- .format(DATE_TIME_FORMATTER);
- }
- /**
- * 明天的 明天0点0分0秒
- *
- * @return 明天0点0分0秒
- */
- public static String tomorrowDateTime() {
- return LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIN).format(DATE_TIME_FORMATTER);
- }
- public static String tomorrowDate() {
- return LocalDate.now().plusDays(1).format(DATE_FORMATTER);
- }
- /**
- * 获取时间范围
- * 用于查询订单的时候按照时间范围查询
- *
- * @param date 时间
- * @param isDateTime 是否要返回时间类型
- * @return 时间范围
- */
- public static TimeFrame getTimeFrame(String date, boolean isDateTime) {
- LocalDate dateTime;
- if (date.length() > 10) {
- dateTime = LocalDate.parse(date, DATE_TIME_FORMATTER);
- } else {
- dateTime = LocalDate.parse(date, DATE_FORMATTER);
- }
- LocalDate localDate = dateTime.plusDays(ONE);
- if (isDateTime) {
- LocalDateTime startOfDay = LocalDateTime.of(dateTime, LocalTime.MIDNIGHT);
- LocalDateTime endOfDay = LocalDateTime.of(localDate, LocalTime.MIDNIGHT);
- return new TimeFrame(startOfDay.format(DATE_TIME_FORMATTER), endOfDay.format(DATE_TIME_FORMATTER));
- }
- return new TimeFrame(dateTime.format(DATE_FORMATTER), localDate.format(DATE_FORMATTER));
- }
- /**
- * 获取年份范围
- *
- * @return 当前年的开始和结束日期
- */
- public static TimeFrame getYearRange() {
- int year = LocalDate.now().getYear();
- LocalDate firstDay = LocalDate.of(year, 1, 1);
- LocalDate lastDay = LocalDate.of(year, 12, 31);
- return new TimeFrame(firstDay.format(DATE_FORMATTER), lastDay.format(DATE_FORMATTER));
- }
- /**
- * 获取现在的时间
- *
- * @return 现在时间
- */
- public static String getNowDateTime() {
- return LocalDateTime.now().format(DATE_TIME_FORMATTER);
- }
- /**
- * 使用年限计算
- *
- * @param date 日期
- * @return 年限
- */
- public static int serviceLife(String date) {
- LocalDate localDate = parseDate(date);
- LocalDate now = LocalDate.now();
- Period between = Period.between(localDate, now);
- return between.getYears();
- }
- /**
- * 获取去年的年份
- * @return 去年的 年
- */
- public static int getLastYear(){
- return LocalDate.now().minusYears(1).getYear();
- }
- @Data
- @AllArgsConstructor
- @NoArgsConstructor
- public static class TimeFrame {
- /**
- * 开始时间
- */
- private String startTime;
- /**
- * 结束时间
- */
- private String endTime;
- }
- }
|