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;
- }
}