Merge pull request 'v0.0.13' (#12) from dev into master

Reviewed-on: #12
This commit was merged in pull request #12.
This commit is contained in:
2026-08-11 15:58:32 +00:00
3 changed files with 24 additions and 65 deletions
+2 -2
View File
@@ -6,7 +6,7 @@
<groupId>com.imyeyu.utils</groupId> <groupId>com.imyeyu.utils</groupId>
<artifactId>timi-utils</artifactId> <artifactId>timi-utils</artifactId>
<version>0.0.12</version> <version>0.0.13</version>
<properties> <properties>
<maven.test.skip>true</maven.test.skip> <maven.test.skip>true</maven.test.skip>
@@ -91,7 +91,7 @@
<dependency> <dependency>
<groupId>com.imyeyu.java</groupId> <groupId>com.imyeyu.java</groupId>
<artifactId>timi-java</artifactId> <artifactId>timi-java</artifactId>
<version>0.0.5</version> <version>0.0.7</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>de.mkammerer</groupId> <groupId>de.mkammerer</groupId>
+4
View File
@@ -435,4 +435,8 @@ public class Text {
public static String bizClassName(Class<?> clazz) { public static String bizClassName(Class<?> clazz) {
return underscoreClassName(clazz).toUpperCase(); return underscoreClassName(clazz).toUpperCase();
} }
public static String normalize(String text) {
return TimiJava.defaultIfEmpty(text, null);
}
} }
+18 -63
View File
@@ -1,14 +1,12 @@
package com.imyeyu.utils; package com.imyeyu.utils;
import com.imyeyu.java.TimiJava; import com.imyeyu.java.TimiJava;
import lombok.Getter;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Date; import java.util.Date;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -77,6 +75,9 @@ public class Time {
/** 格式化 yyyy-MM-dd'T'HH:mm:ss */ /** 格式化 yyyy-MM-dd'T'HH:mm:ss */
public static final SimpleDateFormat dateTimeT = new SimpleDateFormat("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 秒时间戳 */ /** 1 秒时间戳 */
@@ -105,31 +106,6 @@ public class Time {
/** 1 天时间戳(整型) */ /** 1 天时间戳(整型) */
public static final int DI = HI * 24; 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 昨天零时时间戳 * @return 昨天零时时间戳
*/ */
public static long yesterday() { 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 今天零时时间戳 * @return 今天零时时间戳
*/ */
public static long today() { public static long today() {
long now = now(); return today(now());
final long H8 = H * 8; }
return ((now + H8 - (now + H8) % (H * 24)) - H8);
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 明天零时时间戳 * @return 明天零时时间戳
*/ */
public static long tomorrow() { 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); 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;
}
} }