diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/WenyanUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/WenyanUtils.java index ad1bcadda..8b7087c0e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/WenyanUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/i18n/WenyanUtils.java @@ -74,6 +74,11 @@ public final class WenyanUtils { builder.append(DI_ZHI[mod(yearOffset, DI_ZHI.length)]); } + static void appendHour(StringBuilder builder, int hour) { + builder.append(DI_ZHI[((hour + 1) % 24) / 2]); + builder.append(hour % 2 == 0 ? '正' : '初'); + } + public static String formatDateTime(TemporalAccessor time) { LocalDateTime localDateTime; if (time instanceof Instant) @@ -92,8 +97,7 @@ public final class WenyanUtils { builder.append(' '); - builder.append(numberToString(localDateTime.getHour())); - builder.append('时'); + appendHour(builder, localDateTime.getHour()); builder.append(numberToString(localDateTime.getMinute())); builder.append('分'); builder.append(numberToString(localDateTime.getSecond())); diff --git a/HMCL/src/test/java/org/jackhuang/hmcl/util/i18n/WenyanUtilsTest.java b/HMCL/src/test/java/org/jackhuang/hmcl/util/i18n/WenyanUtilsTest.java index c1e575168..e361ebd79 100644 --- a/HMCL/src/test/java/org/jackhuang/hmcl/util/i18n/WenyanUtilsTest.java +++ b/HMCL/src/test/java/org/jackhuang/hmcl/util/i18n/WenyanUtilsTest.java @@ -19,6 +19,8 @@ package org.jackhuang.hmcl.util.i18n; import org.junit.jupiter.api.Test; +import java.util.List; + import static org.junit.jupiter.api.Assertions.assertEquals; /** @@ -39,4 +41,18 @@ public final class WenyanUtilsTest { assertYearToString("甲子", -2996); assertYearToString("庚子", 1000); } + + @Test + public void testHourToString() { + + List list = List.of( + "子正", "丑初", "丑正", "寅初", "寅正", "卯初", "卯正", "辰初", "辰正", "巳初", "巳正", "午初", + "午正", "未初", "未正", "申初", "申正", "酉初", "酉正", "戌初", "戌正", "亥初", "亥正", "子初" + ); + for (int hour = 0; hour < list.size(); hour++) { + StringBuilder builder = new StringBuilder(2); + WenyanUtils.appendHour(builder, hour); + assertEquals(list.get(hour), builder.toString()); + } + } }