diff --git a/hutool-core/src/main/java/cn/hutool/core/date/TimeUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/TimeUtil.java index fbc0a95c0..19b729ada 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/TimeUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/TimeUtil.java @@ -4,27 +4,14 @@ import cn.hutool.core.date.format.GlobalCustomFormat; import cn.hutool.core.text.StrUtil; import cn.hutool.core.util.ObjUtil; -import java.time.DayOfWeek; -import java.time.Duration; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.Period; -import java.time.ZoneId; -import java.time.ZonedDateTime; +import java.time.*; import java.time.chrono.ChronoLocalDate; import java.time.chrono.ChronoLocalDateTime; import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoField; -import java.time.temporal.ChronoUnit; -import java.time.temporal.Temporal; -import java.time.temporal.TemporalAccessor; -import java.time.temporal.TemporalAdjusters; -import java.time.temporal.TemporalUnit; -import java.time.temporal.WeekFields; +import java.time.temporal.*; import java.util.Date; import java.util.TimeZone; +import java.util.function.Function; /** * JDK8+中的{@link java.time} 工具类封装 @@ -355,6 +342,25 @@ public class TimeUtil extends TemporalAccessorUtil { return format(date, DatePattern.NORM_DATE_FORMATTER); } + + /** + * 格式化时间函数 + * + * @return 格式化时间的函数 + */ + public static Function formatTimeFunction(DateTimeFormatter dateTimeFormatter) { + return time -> format(time, dateTimeFormatter); + } + + /** + * 格式化日期函数 + * + * @return 格式化时间的函数 + */ + public static Function formatDateFunction(DateTimeFormatter dateTimeFormatter) { + return date -> format(date, dateTimeFormatter); + } + /** * 日期偏移,根据field不同加不同值(偏移会修改传入的对象) * diff --git a/hutool-core/src/test/java/cn/hutool/core/date/TimeUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/TimeUtilTest.java index dcb304acc..7a825c4de 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/TimeUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/TimeUtilTest.java @@ -10,7 +10,10 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; +import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class TimeUtilTest { @@ -319,4 +322,25 @@ public class TimeUtilTest { Assert.assertThrows(IllegalArgumentException.class, () -> TimeUtil.isIn(begin, null, end, false, false)); Assert.assertThrows(IllegalArgumentException.class, () -> TimeUtil.isIn(begin, begin, null, false, false)); } + + + @Test + public void formatDateFunctionTest() { + List dateStrList = Stream.of("2023-03-01", "2023-03-02") + .map(LocalDate::parse) + .map(TimeUtil.formatDateFunction(DatePattern.CHINESE_DATE_FORMATTER)) + .collect(Collectors.toList()); + Assert.assertEquals("2023年03月01日", dateStrList.get(0)); + Assert.assertEquals("2023年03月02日", dateStrList.get(1)); + } + + @Test + public void formatTimeFunctionTest() { + List dateStrList = Stream.of("2023-03-01T12:23:56", "2023-03-02T12:23:56") + .map(LocalDateTime::parse) + .map(TimeUtil.formatTimeFunction(DatePattern.CHINESE_DATE_FORMATTER)) + .collect(Collectors.toList()); + Assert.assertEquals("2023年03月01日", dateStrList.get(0)); + Assert.assertEquals("2023年03月02日", dateStrList.get(1)); + } }