增加函数式的日期格式化方法

This commit is contained in:
liupeng 2023-03-07 18:29:26 +08:00
parent ececce7c52
commit b67464e6c1
2 changed files with 46 additions and 16 deletions

View File

@ -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<LocalDateTime, String> formatTimeFunction(DateTimeFormatter dateTimeFormatter) {
return time -> format(time, dateTimeFormatter);
}
/**
* 格式化日期函数
*
* @return 格式化时间的函数
*/
public static Function<LocalDate, String> formatDateFunction(DateTimeFormatter dateTimeFormatter) {
return date -> format(date, dateTimeFormatter);
}
/**
* 日期偏移,根据field不同加不同值偏移会修改传入的对象
*

View File

@ -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<String> 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<String> 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));
}
}