diff --git a/pom.xml b/pom.xml index 7ca8932..0ea4c9c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.imyeyu.utils timi-utils - 0.0.12 + 0.0.13 true @@ -91,7 +91,7 @@ com.imyeyu.java timi-java - 0.0.5 + 0.0.7 de.mkammerer diff --git a/src/main/java/com/imyeyu/utils/Text.java b/src/main/java/com/imyeyu/utils/Text.java index 89c637b..18054ae 100644 --- a/src/main/java/com/imyeyu/utils/Text.java +++ b/src/main/java/com/imyeyu/utils/Text.java @@ -435,4 +435,8 @@ public class Text { public static String bizClassName(Class clazz) { return underscoreClassName(clazz).toUpperCase(); } + + public static String normalize(String text) { + return TimiJava.defaultIfEmpty(text, null); + } } diff --git a/src/main/java/com/imyeyu/utils/Time.java b/src/main/java/com/imyeyu/utils/Time.java index 5fd9e50..6f51e93 100644 --- a/src/main/java/com/imyeyu/utils/Time.java +++ b/src/main/java/com/imyeyu/utils/Time.java @@ -1,14 +1,12 @@ package com.imyeyu.utils; import com.imyeyu.java.TimiJava; -import lombok.Getter; import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; -import java.time.temporal.ChronoUnit; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -77,6 +75,9 @@ public class Time { /** 格式化 yyyy-MM-dd'T'HH:mm:ss */ public static final SimpleDateFormat dateTimeT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + /** 格式化 yyyy-MM-dd HH:mm:ss */ + public static final SimpleDateFormat serialize = new SimpleDateFormat("yyyyMMddHHmmss"); + // ---------- 长整型时间戳 ---------- /** 1 秒时间戳 */ @@ -105,31 +106,6 @@ public class Time { /** 1 天时间戳(整型) */ public static final int DI = HI * 24; - /** - * 计算两个时间戳精确的日期时间差 - * - * @param begin 开始时间戳 - * @param end 结束时间戳 - * @return 时差 - */ - public static Between between(long begin, long end) { - if (end < begin) { - throw new IllegalArgumentException("end time must greater than begin time:" + end + " < " + begin); - } - LocalDateTime ldtBegin = toLocalDateTime(begin); - LocalDateTime ldtEnd = toLocalDateTime(end); - - Between between = new Between(); - between.year = (int) ChronoUnit.YEARS.between(ldtBegin, ldtEnd); - between.month = (int) ChronoUnit.MONTHS.between(ldtBegin, ldtEnd) % 12; - between.day = (int) ChronoUnit.DAYS.between(ldtBegin.plusMonths(between.year * 12L + between.month), ldtEnd); - between.hour = (int) (ChronoUnit.HOURS.between(ldtBegin, ldtEnd) - ChronoUnit.DAYS.between(ldtBegin, ldtEnd) * 24); - between.minute = (int) ChronoUnit.MINUTES.between(ldtBegin, ldtEnd) % 60; - between.second = (int) ChronoUnit.SECONDS.between(ldtBegin, ldtEnd) % 60; - between.millis = (int) ((end - begin) % 1000); - return between; - } - /** * 获取此刻毫秒 * @@ -154,7 +130,11 @@ public class Time { * @return 昨天零时时间戳 */ public static long yesterday() { - return today() - D; + return yesterday(now()); + } + + public static long yesterday(long time) { + return today(time) - D; } /** @@ -163,9 +143,11 @@ public class Time { * @return 今天零时时间戳 */ public static long today() { - long now = now(); - final long H8 = H * 8; - return ((now + H8 - (now + H8) % (H * 24)) - H8); + return today(now()); + } + + public static long today(long time) { + return Instant.ofEpochMilli(time).atZone(ZoneId.systemDefault()).toLocalDate().atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli(); } /** @@ -174,7 +156,11 @@ public class Time { * @return 明天零时时间戳 */ public static long tomorrow() { - return today() + D; + return tomorrow(now()); + } + + public static long tomorrow(long time) { + return today(time) + D; } /** @@ -380,35 +366,4 @@ public class Time { return String.format("%d:%02d:%02d.%03d", h, s / 60 - h * 60, s % 60, millis % 1000); } } - - /** - * 时差 - * - * @author 夜雨 - * @version 2022-10-12 14:46 - */ - @Getter - public static class Between { - - /** 年 */ - int year; - - /** 月 */ - int month; - - /** 天 */ - int day; - - /** 小时 */ - int hour; - - /** 分钟 */ - int minute; - - /** 秒 */ - int second; - - /** 毫秒 */ - int millis; - } }