mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
[improve] 支持 宋以后把十二时辰中每个时辰平分为初、正两部分
This commit is contained in:
committed by
VampireAchao
parent
182ada0c11
commit
0e4fa57574
@@ -1,6 +1,5 @@
|
||||
package org.dromara.hutool.core.date.chinese;
|
||||
|
||||
import org.dromara.hutool.core.date.DateBetween;
|
||||
import org.dromara.hutool.core.date.DateUnit;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -13,27 +12,48 @@ import org.junit.jupiter.api.Test;
|
||||
public class ShiChenTest {
|
||||
|
||||
@Test
|
||||
void testToModernTimeForAllTimes() {
|
||||
// 测试每个时辰的转换
|
||||
void testToModernTime() {
|
||||
// 测试“时”后缀的转换,表示整个时辰
|
||||
Assertions.assertEquals(2, ShiChen.toModernTime("子时").between(DateUnit.HOUR));
|
||||
|
||||
// 测试“初”和“正”后缀的转换,表示时辰的前半段和后半段
|
||||
Assertions.assertEquals(1, ShiChen.toModernTime("子初").between(DateUnit.HOUR));
|
||||
Assertions.assertEquals(1, ShiChen.toModernTime("子正").between(DateUnit.HOUR));
|
||||
|
||||
// 测试所有时辰
|
||||
String[] times = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
|
||||
int[][] expectedHours = {{23, 1}, {1, 3}, {3, 5}, {5, 7}, {7, 9}, {9, 11}, {11, 13}, {13, 15}, {15, 17}, {17, 19}, {19, 21}, {21, 23}};
|
||||
for (int i = 0; i < times.length; i++) {
|
||||
DateBetween dateBetween = ShiChen.toModernTime(times[i] + "时");
|
||||
Assertions.assertEquals(2, dateBetween.between(DateUnit.HOUR));
|
||||
Assertions.assertEquals(expectedHours[i][0], dateBetween.getBegin().getHours());
|
||||
Assertions.assertEquals(expectedHours[i][1], dateBetween.getEnd().getHours());
|
||||
for (String time : times) {
|
||||
Assertions.assertEquals(2, ShiChen.toModernTime(time + "时").between(DateUnit.HOUR));
|
||||
Assertions.assertEquals(1, ShiChen.toModernTime(time + "初").between(DateUnit.HOUR));
|
||||
Assertions.assertEquals(1, ShiChen.toModernTime(time + "正").between(DateUnit.HOUR));
|
||||
}
|
||||
Assertions.assertThrows(IllegalArgumentException.class, () -> {
|
||||
ShiChen.toModernTime("无效时");
|
||||
});
|
||||
Assertions.assertThrows(IllegalArgumentException.class, () -> {
|
||||
ShiChen.toModernTime("无效正");
|
||||
});
|
||||
Assertions.assertThrows(IllegalArgumentException.class, () -> {
|
||||
ShiChen.toModernTime("");
|
||||
});
|
||||
Assertions.assertThrows(IllegalArgumentException.class, () -> {
|
||||
ShiChen.toModernTime(null);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void testToChangAnTimeForAllHours() {
|
||||
// 从23时开始测试,因为子时开始于23时
|
||||
String[] expectedTimes = {"子时", "丑时", "丑时", "寅时", "寅时", "卯时", "卯时", "辰时", "辰时", "巳时", "巳时", "午时", "午时", "未时", "未时", "申时", "申时", "酉时", "酉时", "戌时", "戌时", "亥时", "亥时", "子时", "未知"};
|
||||
for (int hour = 0; hour <= 24; hour++) {
|
||||
String expectedTime = expectedTimes[hour];
|
||||
String actualTime = ShiChen.toChangAnTime(hour);
|
||||
Assertions.assertEquals(expectedTime, actualTime);
|
||||
}
|
||||
void testToShiChen() {
|
||||
// 测试小时转换为长安时辰,不包含“初”或“正”
|
||||
Assertions.assertEquals("子时", ShiChen.toShiChen(23, true));
|
||||
Assertions.assertEquals("子时", ShiChen.toShiChen(0, true));
|
||||
|
||||
// 测试小时转换为长安时辰,包含“初”或“正”
|
||||
Assertions.assertEquals("子正", ShiChen.toShiChen(0, false));
|
||||
Assertions.assertEquals("丑初", ShiChen.toShiChen(1, false));
|
||||
|
||||
// 测试边界条件
|
||||
Assertions.assertEquals("未知", ShiChen.toShiChen(24, true));
|
||||
Assertions.assertEquals("未知", ShiChen.toShiChen(-1, false));
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user