| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- package com.malk.Util;
- import cn.hutool.core.util.ObjectUtil;
- import lombok.SneakyThrows;
- import org.apache.commons.lang3.StringUtils;
- import javax.annotation.Nullable;
- import java.text.SimpleDateFormat;
- import java.time.*;
- import java.time.format.DateTimeFormatter;
- import java.time.temporal.Temporal;
- import java.time.temporal.TemporalAdjusters;
- import java.util.Date;
- /**
- * 时间格式 [Calendar 日历类, Date 是java 8前产物, LocalDateTime]
- */
- public abstract class UtilDateTime {
- public final static String DATE_PATTERN = "yyyy-MM-dd";
- public final static String TIME_PATTERN = "HH:mm:ss";
- public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
- /// T表示分隔符,Z表示的是UTC "yyyy-MM-dd'T'HH:mm:ss.SSS Z"
- //// convert ////
- // 将java.util.Date 转换为java8 的java.time.LocalDateTime,默认时区为东8区
- public static LocalDateTime convertToLocalDateTimeFromDate(Date date) {
- return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
- }
- // 将java8 的 java.time.LocalDateTime 转换为 java.util.Date,默认时区为东8区
- public static Date convertToDateFromLocalDateTime(LocalDateTime localDateTime) {
- return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
- }
- // 获取时间段内小时
- public static float betweenHour(Temporal startInclusive, Temporal endExclusive) {
- return Duration.between(startInclusive, endExclusive).toMillis() / 60f;
- }
- // 获取上月第一天0点
- public static LocalDateTime firstDayOfLastMonth(LocalDateTime dateTime) {
- int month = dateTime.getMonthValue() - 1;
- int year = dateTime.getYear();
- if (month == 0) {
- month = 12;
- }
- return LocalDateTime.of(year, month, 1, 0, 0, 0);
- }
- // 计算时间差和指定如一月最后一天很方便, 如下个月第一天 .... [时间会保留传入时间]
- public static LocalDateTime firstDayOfNextMonth(LocalDateTime dateTime) {
- return dateTime.with(TemporalAdjusters.firstDayOfNextMonth());
- }
- // 获取当天0点时间
- public static LocalDateTime minLocalDateTime(@Nullable LocalDateTime dateTime) {
- return LocalDateTime.of(dateTime.toLocalDate(), LocalTime.MIN);
- }
- //// Date ////
- public static String formatDateTime(Date dateTime) {
- if (ObjectUtil.isNull(dateTime)) return "";
- return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z").format(dateTime);
- }
- public static String formatDate(Date dateTime) {
- return new SimpleDateFormat(DATE_PATTERN).format(dateTime);
- }
- public static String formatTime(Date dateTime) {
- return new SimpleDateFormat(TIME_PATTERN).format(dateTime);
- }
- @SneakyThrows
- public static Date parseDateTime(String dateStr) {
- if (StringUtils.isBlank(dateStr)) {
- return new Date();
- }
- return new SimpleDateFormat(DATE_TIME_PATTERN).parse(dateStr);
- }
- @SneakyThrows
- public static Date parseDate(String dateStr) {
- return new SimpleDateFormat(DATE_PATTERN).parse(dateStr);
- }
- @SneakyThrows
- public static Date parseTime(String dateStr) {
- return new SimpleDateFormat(TIME_PATTERN).parse(dateStr);
- }
- //// LocalDateTime ////
- public static String formatLocalDateTime(LocalDateTime dateTime) {
- if (ObjectUtil.isNull(dateTime)) return "";
- return DateTimeFormatter.ofPattern(DATE_TIME_PATTERN).format(dateTime);
- }
- public static String formatLocalDate(LocalDate dateTime) {
- return DateTimeFormatter.ofPattern(DATE_PATTERN).format(dateTime);
- }
- public static String formatLocalTime(LocalTime dateTime) {
- return DateTimeFormatter.ofPattern(TIME_PATTERN).format(dateTime);
- }
- public static LocalDateTime parseLocalDateTime(String dateStr) {
- if (StringUtils.isBlank(dateStr)) {
- return LocalDateTime.now();
- }
- return LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern(DATE_TIME_PATTERN));
- }
- public static LocalDate parseLocalDate(String dateStr) {
- return LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(DATE_PATTERN));
- }
- public static LocalTime parseLocalTime(String dateStr) {
- return LocalTime.parse(dateStr, DateTimeFormatter.ofPattern(TIME_PATTERN));
- }
- }
|