3 Commits

Author SHA1 Message Date
7e1e8e0583 perf: 简单优化代码 2025-09-03 20:59:26 +08:00
8f451e7eb9 refactor(exception)!: 重构多场景异常相关代码 (#62 @Gitea)
- `IExceptionType` 不继承自 `IExceptionFactory`,具体表示异常场景的枚举,可按需实现这两个接口
- 简化 `IMultiTypesException` 接口定义,不与 `IExceptionType` 强制绑定
- 修改相关文档与描述

通过以上修改,使表示异常场景的枚举可以与异常类分开定义,使不同的异常可以复用同一套场景枚举。不强制作为单一异常的工厂,在被不同的异常复用时,可以更灵活地定义不同的工厂方法。
2025-09-03 20:41:23 +08:00
2b6f946759 perf: 优化 JodaTimeTools (#61 @Gitea)
- 优化 `JodaTimeTools`
- 完善 javadoc
2025-09-03 19:49:12 +08:00
2 changed files with 28 additions and 13 deletions

View File

@@ -54,7 +54,9 @@ public class JodaTimeTools {
* @param zone 时区 * @param zone 时区
* @return {@link org.joda.time.Instant} 对象 * @return {@link org.joda.time.Instant} 对象
*/ */
public static org.joda.time.Instant toJodaInstant(java.time.LocalDateTime localDateTime, java.time.ZoneId zone) { public static org.joda.time.Instant toJodaInstant(
java.time.LocalDateTime localDateTime,
java.time.ZoneId zone) {
return toJodaInstant(java.time.ZonedDateTime.of(localDateTime, zone)); return toJodaInstant(java.time.ZonedDateTime.of(localDateTime, zone));
} }
@@ -92,9 +94,9 @@ public class JodaTimeTools {
* {@link org.joda.time.DateTimeZone} 对象 * {@link org.joda.time.DateTimeZone} 对象
* 转换为 Java 中的 {@link java.time.Instant} 对象 * 转换为 Java 中的 {@link java.time.Instant} 对象
* *
* @param localDateTime * @param localDateTime {@link org.joda.time.LocalDateTime} 对象
* @param zone * @param zone {@link org.joda.time.DateTimeZone} 对象
* @return * @return Java 表示时间戳的 {@link java.time.Instant} 对象
*/ */
public static java.time.Instant toJavaInstant( public static java.time.Instant toJavaInstant(
org.joda.time.LocalDateTime localDateTime, org.joda.time.LocalDateTime localDateTime,
@@ -135,8 +137,9 @@ public class JodaTimeTools {
public static org.joda.time.DateTime toJodaDateTime( public static org.joda.time.DateTime toJodaDateTime(
java.time.LocalDateTime localDateTime, java.time.LocalDateTime localDateTime,
java.time.ZoneId zone) { java.time.ZoneId zone) {
org.joda.time.DateTimeZone dateTimeZone = toJodaZone(zone); org.joda.time.LocalDateTime jodaLocalDateTime = toJodaLocalDateTime(localDateTime);
return toJodaInstant(java.time.ZonedDateTime.of(localDateTime, zone).toInstant()).toDateTime(dateTimeZone); org.joda.time.DateTimeZone jodaZone = toJodaZone(zone);
return jodaLocalDateTime.toDateTime(jodaZone);
} }
/** /**
@@ -218,9 +221,15 @@ public class JodaTimeTools {
* @return joda-time LocalDateTime * @return joda-time LocalDateTime
*/ */
public static org.joda.time.LocalDateTime toJodaLocalDateTime(java.time.LocalDateTime localDateTime) { public static org.joda.time.LocalDateTime toJodaLocalDateTime(java.time.LocalDateTime localDateTime) {
java.time.ZoneId javaZone = java.time.ZoneId.systemDefault(); return new org.joda.time.LocalDateTime(
org.joda.time.DateTimeZone jodaZone = toJodaZone(javaZone); localDateTime.getYear(),
return toJodaInstant(localDateTime, javaZone).toDateTime(jodaZone).toLocalDateTime(); localDateTime.getMonthValue(),
localDateTime.getDayOfMonth(),
localDateTime.getHour(),
localDateTime.getMinute(),
localDateTime.getSecond(),
localDateTime.getNano() / 1_000_000 // 毫秒转纳秒
);
} }
// ================================ // ================================
@@ -238,9 +247,15 @@ public class JodaTimeTools {
* @return Java 8 LocalDateTime * @return Java 8 LocalDateTime
*/ */
public static java.time.LocalDateTime toJavaLocalDateTime(org.joda.time.LocalDateTime localDateTime) { public static java.time.LocalDateTime toJavaLocalDateTime(org.joda.time.LocalDateTime localDateTime) {
org.joda.time.DateTimeZone jodaZone = org.joda.time.DateTimeZone.getDefault(); return java.time.LocalDateTime.of(
java.time.ZoneId javaZone = toJavaZone(jodaZone); localDateTime.getYear(),
return toJavaInstant(localDateTime, jodaZone).atZone(javaZone).toLocalDateTime(); localDateTime.getMonthOfYear(),
localDateTime.getDayOfMonth(),
localDateTime.getHourOfDay(),
localDateTime.getMinuteOfHour(),
localDateTime.getSecondOfMinute(),
localDateTime.getMillisOfSecond() * 1_000_000 // 毫秒转纳秒
);
} }
// ================================ // ================================

View File

@@ -33,7 +33,7 @@ import org.junit.jupiter.api.Test;
public class JodaTimeToolsTests { public class JodaTimeToolsTests {
// Java // Java
static final LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2024, 12, 29, 12, 58, 30, 333000000); static final LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2024, 12, 29, 12, 58, 30, 333 * 1_000_000);
static final LocalDate LOCAL_DATE = LOCAL_DATE_TIME.toLocalDate(); static final LocalDate LOCAL_DATE = LOCAL_DATE_TIME.toLocalDate();
static final LocalTime LOCAL_TIME = LOCAL_DATE_TIME.toLocalTime(); static final LocalTime LOCAL_TIME = LOCAL_DATE_TIME.toLocalTime();