!1227 perf(core): 时间格式化工具支持自定义设置单位

Merge pull request !1227 from 蒋小小/v6-dev
This commit is contained in:
Looly
2024-06-17 07:25:23 +00:00
committed by Gitee
2 changed files with 85 additions and 15 deletions

View File

@@ -12,34 +12,62 @@
package org.dromara.hutool.core.date;
import org.dromara.hutool.core.text.StrUtil;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.function.Function;
public class BetweenFormatterTest {
Function<BetweenFormatter.Level, String> levelFormatterEn = level -> {
switch (level) {
case DAY:
return " day";
case HOUR:
return " hour";
case MINUTE:
return " minute";
case SECOND:
return " second";
case MILLISECOND:
return " millisecond";
default:
return " " + level.name();
}
};
@Test
public void formatTest(){
public void formatTest() {
final long betweenMs = DateUtil.betweenMs(DateUtil.parse("2017-01-01 22:59:59"), DateUtil.parse("2017-01-02 23:59:58"));
final BetweenFormatter formatter = new BetweenFormatter(betweenMs, BetweenFormatter.Level.MILLISECOND, 1);
Assertions.assertEquals(formatter.toString(), "1天");
}
@Test
public void formatBetweenTest(){
public void formatTestEn() {
final long betweenMs = DateUtil.betweenMs(DateUtil.parse("2017-01-01 22:59:59"), DateUtil.parse("2017-01-02 23:59:58"));
final BetweenFormatter formatter = new BetweenFormatter(betweenMs, BetweenFormatter.Level.MILLISECOND, 1);
formatter.setLevelFormatter(levelFormatterEn);
Assertions.assertEquals(formatter.toString(), "1 day");
}
@Test
public void formatBetweenTest() {
final long betweenMs = DateUtil.betweenMs(DateUtil.parse("2018-07-16 11:23:19"), DateUtil.parse("2018-07-16 11:23:20"));
final BetweenFormatter formatter = new BetweenFormatter(betweenMs, BetweenFormatter.Level.SECOND, 1);
Assertions.assertEquals(formatter.toString(), "1秒");
}
@Test
public void formatBetweenTest2(){
public void formatBetweenTest2() {
final long betweenMs = DateUtil.betweenMs(DateUtil.parse("2018-07-16 12:25:23"), DateUtil.parse("2018-07-16 11:23:20"));
final BetweenFormatter formatter = new BetweenFormatter(betweenMs, BetweenFormatter.Level.SECOND, 5);
Assertions.assertEquals(formatter.toString(), "1小时2分3秒");
}
@Test
public void formatTest2(){
public void formatTest2() {
final BetweenFormatter formatter = new BetweenFormatter(584, BetweenFormatter.Level.SECOND, 1);
Assertions.assertEquals(formatter.toString(), "0秒");
}
@@ -54,5 +82,8 @@ public class BetweenFormatterTest {
s = BetweenFormatter.of(3600000, BetweenFormatter.Level.MILLISECOND).setSimpleMode(false).format();
Assertions.assertEquals("1小时0分0秒", s);
s = BetweenFormatter.of(3600000, BetweenFormatter.Level.MILLISECOND).setSimpleMode(false).setLevelFormatter(levelFormatterEn).setSeparator(",").format();
Assertions.assertEquals("1 hour,0 minute,0 second", s);
}
}