基于 Java 1.8,新的日期和时间 API 封装
Don’t say much, just go to the code.
packageorg.bood.common.utils;importjava.time.*;importjava.time.format.DateTimeFormatter;importjava.time.temporal.Temporal;importjava.time.temporal.TemporalAdjuster;importjava.time.temporal.TemporalAdjusters;importjava.util.Date;/**
* JAVA 8 时间工具类
*
* @author bood
* @since 2020/9/25
*/publicclassDateTimeUtils{/**
* 格式:yyyy-MM-dd HH:mm:ss
*/publicstaticfinalDateTimeFormatter DATETIME_FORMATTER=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");/**
* 格式:yyyy-MM-dd
*/publicstaticfinalDateTimeFormatter DATE_FORMATTER=DateTimeFormatter.ofPattern("yyyy-MM-dd");/**
* 格式:HH:mm:ss
*/publicstaticfinalDateTimeFormatter TIME_FORMATTER=DateTimeFormatter.ofPattern("HH:mm:ss");privateDateTimeUtils(){}// ------------------------------------------- 获取时间 -------------------------------------------/**
* 返回 当前时间的(yyyy-MM-dd HH:mm:ss)
*
* @return yyyy-MM-dd HH:mm:ss
*/publicstaticLocalDateTimeget(){returnLocalDateTime.now();}/**
* 返回 当前时间的(yyyy-MM-dd)
*
* @return yyyy-MM-dd
*/publicstaticLocalDategetCurrentLocalDate(){returnLocalDate.now();}/**
* 返回 当前时间的(HH:mm:ss)
*
* @return HH:mm:ss
*/publicstaticLocalTimegetCurrentLocalTime(){returnLocalTime.now();}// ------------------------------------------- 时间格式化 -------------------------------------------/**
* <p>
* yyyy-MM-dd HH:mm:ss 转 LocalDateTime 类型
* </p>
*
* @param dateTimeStr: yyyy-MM-dd HH:mm:ss
* @return:java.time.LocalDateTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateTimeparseLocalDateTime(String dateTimeStr){returnLocalDateTime.parse(dateTimeStr, DATETIME_FORMATTER);}/**
* <p>
* yyyy-MM-dd 转 LocalDate 类型
* </p>
*
* @param dateStr: yyyy-MM-dd
* @return:java.time.LocalDate
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateparseLocalDate(String dateStr){returnLocalDate.parse(dateStr, DATE_FORMATTER);}/**
* <p>
* HH:mm:ss 转 LocalTime 类型
* </p>
*
* @param timeStr: HH:mm:ss
* @return:java.time.LocalTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalTimeparseLocalTime(String timeStr){returnLocalTime.parse(timeStr, TIME_FORMATTER);}/**
* <p>
* LocalDateTime 转 yyyy-MM-dd HH:mm:ss
* </p>
*
* @param datetime: LocalDateTime
* @return:java.lang.String
* @author:bood
* @date:2020/9/25
*/publicstaticStringformatLocalDateTime(LocalDateTime datetime){return datetime.format(DATETIME_FORMATTER);}/**
* <p>
* LocalDate 转 yyyy-MM-dd
* </p>
*
* @param date: LocalDate
* @return:java.lang.String
* @author:bood
* @date:2020/9/25
*/publicstaticStringformatLocalDate(LocalDate date){return date.format(DATE_FORMATTER);}/**
* <p>
* LocalTime 转 HH:mm:ss
* </p>
*
* @param time: LocalTime
* @return:java.lang.String
* @author:bood
* @date:2020/9/25
*/publicstaticStringformatLocalTime(LocalTime time){return time.format(TIME_FORMATTER);}// ------------------------------------------- 时间计算 -------------------------------------------/**
* <p>
* 当前时间延期几天
* </p>
*
* @param days: 天数
* @return:java.time.LocalDateTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateTimeplusDays(int days){returnget().plusDays(days);}/**
* <p>
* 日期相隔天数
* </p>
*
* @param startDateInclusive: 开始时间
* @param endDateExclusive: 结束时间
* @return:int
* @author:bood
* @date:2020/9/25
*/publicstaticintperiodDays(LocalDate startDateInclusive,LocalDate endDateExclusive){returnPeriod.between(startDateInclusive, endDateExclusive).getDays();}/**
* <p>
* 日期相隔小时
* </p>
*
* @param startInclusive: 开始时间
* @param endExclusive: 结束时间
* @return:long
* @author:bood
* @date:2020/9/25
*/publicstaticlongdurationHours(Temporal startInclusive,Temporal endExclusive){returnDuration.between(startInclusive, endExclusive).toHours();}/**
* <p>
* 日期相隔分钟
* </p>
*
* @param startInclusive: 开始时间
* @param endExclusive: 结束时间
* @return:long
* @author:bood
* @date:2020/9/25
*/publicstaticlongdurationMinutes(Temporal startInclusive,Temporal endExclusive){returnDuration.between(startInclusive, endExclusive).toMinutes();}/**
* <p>
* 日期相隔毫秒数
* </p>
*
* @param startInclusive: 开始时间
* @param endExclusive: 结束时间
* @return:long
* @author:bood
* @date:2020/9/25
*/publicstaticlongdurationMillis(Temporal startInclusive,Temporal endExclusive){returnDuration.between(startInclusive, endExclusive).toMillis();}/**
* <p>
* 返回 指定年份的(yyyy-MM-dd HH:mm:ss)
* </p>
*
* @param year: 年份
* @return:java.time.LocalDateTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateTimewithYear(int year){returnget().withYear(year);}/**
* <p>
* 返回 指定年份的 第一天时间
* </p>
*
* @param year: 年份
* @return:java.time.LocalDateTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateTimefirstDayOfThisYear(int year){returnwithYear(year).with(TemporalAdjusters.firstDayOfYear()).with(LocalTime.MIN);}/**
* <p>
* 返回 指定年份的 最末天时间
* </p>
*
* @param year: 年份
* @return:java.time.LocalDateTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateTimelastDayOfThisYear(int year){returnwithYear(year).with(TemporalAdjusters.lastDayOfYear()).with(LocalTime.MAX);}/**
* <p>
* 返回 指定年份的 第一天时间
* </p>
*
* @param year: 年份
* @return:java.lang.String
* @author:bood
* @date:2020/9/25
*/publicstaticStringgetFirstDayOfThisDate(int year){LocalDateTime firstDayOfThisYear=firstDayOfThisYear(year);return DATETIME_FORMATTER.format(firstDayOfThisYear);}/**
* <p>
* 返回 指定年份的 最末天时间
* </p>
*
* @param year: 年份
* @return:java.lang.String
* @author:bood
* @date:2020/9/25
*/publicstaticStringgetLastDayOfThisDate(int year){LocalDateTime lastDayOfThisYear=lastDayOfThisYear(year);return DATETIME_FORMATTER.format(lastDayOfThisYear);}/**
* <p>
* 获取本月的第一天(当前时间)
* </p>
*
* @return:java.lang.String
* @author:bood
* @date:2020/9/25
*/publicstaticStringgetFirstDayOfThisMonth(){LocalDateTime firstDayOfThisYear=get().with(TemporalAdjusters.firstDayOfMonth());return DATETIME_FORMATTER.format(firstDayOfThisYear);}/**
* <p>
* 获取本月的最末天(当前时间)
* </p>
*
* @return:java.lang.String
* @author:bood
* @date:2020/9/25
*/publicstaticStringgetLastDayOfThisMonth(){LocalDateTime firstDayOfThisYear=get().with(TemporalAdjusters.lastDayOfMonth());return DATETIME_FORMATTER.format(firstDayOfThisYear);}/**
* <p>
* 当天开始时间
* </p>
*
* @return:java.time.LocalDateTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateTimetodayStart(){returnLocalDateTime.of(getCurrentLocalDate(),LocalTime.MIN);}/**
* <p>
* 当天结束时间
* </p>
*
* @return:java.time.LocalDateTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateTimetodayEnd(){returnLocalDateTime.of(getCurrentLocalDate(),LocalTime.MAX);}/**
* <p>
* 获取 指定年月的 第一个周一
* </p>
*
* @param year: 年份
* @param month: 月份
* @return:java.time.LocalDateTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateTimefirstDayOfWeekInYearMonth(int year,int month){returnget().withYear(year).withMonth(month).with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));}/**
* <p>
* 获取 本周 第一天
* </p>
*
* @return:java.lang.String
* @author:bood
* @date:2020/9/25
*/publicstaticStringgetStartDayOfWeekToString(){returnformatLocalDate(getStartDayOfWeek());}/**
* <p>
* 获取 本周 第一天
* </p>
*
* @return:java.time.LocalDate
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDategetStartDayOfWeek(){TemporalAdjuster first_of_week=TemporalAdjusters.ofDateAdjuster(localDate-> localDate.minusDays(localDate.getDayOfWeek().getValue()-DayOfWeek.MONDAY.getValue()));returngetCurrentLocalDate().with(first_of_week);}/**
* <p>
* 获取 本周 第末天
* </p>
*
* @return:java.lang.String
* @author:bood
* @date:2020/9/25
*/publicstaticStringgetEndDayOfWeekToString(){returnformatLocalDate(getEndDayOfWeek());}/**
* <p>
* 获取 本周 第末天
* </p>
*
* @return:java.time.LocalDate
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDategetEndDayOfWeek(){TemporalAdjuster last_of_week=TemporalAdjusters.ofDateAdjuster(localDate-> localDate.plusDays(DayOfWeek.SUNDAY.getValue()- localDate.getDayOfWeek().getValue()));returngetCurrentLocalDate().with(last_of_week);}/**
* <p>
* LocalDateTime 转 Date
* </p>
*
* @param localDateTime: LocalDate 类型
* @return:java.util.Date
* @author:bood
* @date:2020/9/25
*/publicstaticDateasDate(LocalDateTime localDateTime){returnDate.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());}/**
* <p>
* Date 转 LocalDateTime
* </p>
*
* @param date: Date 类型
* @return:java.time.LocalDateTime
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateTimeasLocalDateTime(Date date){returnInstant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();}/**
* <p>
* LocalDate 转 Date
* </p>
*
* @param localDate: LocalDate 类型
* @return:java.util.Date
* @author:bood
* @date:2020/9/25
*/publicstaticDateasDate(LocalDate localDate){returnDate.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());}/**
* <p>
* Date 转 LocalDate
* </p>
*
* @param date: Date 类型
* @return:java.time.LocalDate
* @author:bood
* @date:2020/9/25
*/publicstaticLocalDateasLocalDate(Date date){returnInstant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();}}
声明:本站所有文章,如无特殊说明或标注,均为网络收集发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。