扩展LocalDateTimeUtil.isIn方法使用场景

This commit is contained in:
Looly 2022-09-04 22:06:11 +08:00
parent c0cf8cf42d
commit fd7be4e6d2
4 changed files with 45 additions and 46 deletions

View File

@ -21,6 +21,8 @@
* 【extra 】 QrCodeUtil新增SVG格式、Ascii Art字符画格式pr#763@Gitee * 【extra 】 QrCodeUtil新增SVG格式、Ascii Art字符画格式pr#763@Gitee
* 【jwt 】 JWTUtil的parseToken增加空值异常抛出issue#I5OCQB@Gitee * 【jwt 】 JWTUtil的parseToken增加空值异常抛出issue#I5OCQB@Gitee
* 【extra 】 resource.loader等过期参数替换issue#2571@Github * 【extra 】 resource.loader等过期参数替换issue#2571@Github
* 【core 】 添加ObjectUtil的别名工具类ObjUtil
* 【core 】 扩展LocalDateTimeUtil.isIn方法使用场景pr#2589@Github
* *
### 🐞Bug修复 ### 🐞Bug修复
* 【http 】 修复https下可能的Patch、Get请求失效问题issue#I3Z3DH@Gitee * 【http 】 修复https下可能的Patch、Get请求失效问题issue#I3Z3DH@Gitee

View File

@ -598,20 +598,6 @@ public class LocalDateTimeUtil {
return date1 != null && date2 != null && date1.isEqual(date2); return date1 != null && date2 != null && date1.isEqual(date2);
} }
/**
* 判断当前时间默认时区是否在指定范围内<br>
* 起始时间和结束时间可以互换
*
* @param beginDate 起始时间包含
* @param endDate 结束时间包含
* @return 是否在范围内
* @author FengBaoheng
* @since 5.8.6
*/
public static boolean isIn(ChronoLocalDateTime<?> beginDate, ChronoLocalDateTime<?> endDate) {
return TemporalAccessorUtil.isIn(LocalDateTimeUtil.now(), beginDate, endDate);
}
/** /**
* 当前日期是否在日期指定范围内<br> * 当前日期是否在日期指定范围内<br>
* 起始日期和结束日期可以互换 * 起始日期和结束日期可以互换

View File

@ -0,0 +1,9 @@
package cn.hutool.core.util;
/**
* 对象工具类{@link ObjectUtil}<br>
* 从6.x开始将删除ObjectUtil而使用ObjUtil
*
*/
public class ObjUtil extends ObjectUtil{
}

View File

@ -11,6 +11,7 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalAccessor;
import java.util.Objects;
public class LocalDateTimeUtilTest { public class LocalDateTimeUtilTest {
@ -21,7 +22,7 @@ public class LocalDateTimeUtilTest {
@Test @Test
public void ofTest() { public void ofTest() {
String dateStr = "2020-01-23T12:23:56"; final String dateStr = "2020-01-23T12:23:56";
final DateTime dt = DateUtil.parse(dateStr); final DateTime dt = DateUtil.parse(dateStr);
LocalDateTime of = LocalDateTimeUtil.of(dt); LocalDateTime of = LocalDateTimeUtil.of(dt);
@ -35,25 +36,25 @@ public class LocalDateTimeUtilTest {
@Test @Test
public void parseOffsetTest() { public void parseOffsetTest() {
final LocalDateTime localDateTime = LocalDateTimeUtil.parse("2021-07-30T16:27:27+08:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME); final LocalDateTime localDateTime = LocalDateTimeUtil.parse("2021-07-30T16:27:27+08:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME);
Assert.assertEquals("2021-07-30T16:27:27", localDateTime.toString()); Assert.assertEquals("2021-07-30T16:27:27", Objects.requireNonNull(localDateTime).toString());
} }
@Test @Test
public void parseTest() { public void parseTest() {
final LocalDateTime localDateTime = LocalDateTimeUtil.parse("2020-01-23T12:23:56", DateTimeFormatter.ISO_DATE_TIME); final LocalDateTime localDateTime = LocalDateTimeUtil.parse("2020-01-23T12:23:56", DateTimeFormatter.ISO_DATE_TIME);
Assert.assertEquals("2020-01-23T12:23:56", localDateTime.toString()); Assert.assertEquals("2020-01-23T12:23:56", Objects.requireNonNull(localDateTime).toString());
} }
@Test @Test
public void parseTest2() { public void parseTest2() {
final LocalDateTime localDateTime = LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN); final LocalDateTime localDateTime = LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN);
Assert.assertEquals("2020-01-23T00:00", localDateTime.toString()); Assert.assertEquals("2020-01-23T00:00", Objects.requireNonNull(localDateTime).toString());
} }
@Test @Test
public void parseTest3() { public void parseTest3() {
final LocalDateTime localDateTime = LocalDateTimeUtil.parse("12:23:56", DatePattern.NORM_TIME_PATTERN); final LocalDateTime localDateTime = LocalDateTimeUtil.parse("12:23:56", DatePattern.NORM_TIME_PATTERN);
Assert.assertEquals("12:23:56", localDateTime.toLocalTime().toString()); Assert.assertEquals("12:23:56", Objects.requireNonNull(localDateTime).toLocalTime().toString());
} }
@Test @Test
@ -64,20 +65,20 @@ public class LocalDateTimeUtilTest {
@Test @Test
public void parseTest5() { public void parseTest5() {
LocalDateTime localDateTime = LocalDateTimeUtil.parse("19940121183604", "yyyyMMddHHmmss"); final LocalDateTime localDateTime = LocalDateTimeUtil.parse("19940121183604", "yyyyMMddHHmmss");
Assert.assertEquals("1994-01-21T18:36:04", localDateTime.toString()); Assert.assertEquals("1994-01-21T18:36:04", Objects.requireNonNull(localDateTime).toString());
} }
@Test @Test
public void parseTest6() { public void parseTest6() {
LocalDateTime localDateTime = LocalDateTimeUtil.parse("19940121183604682", "yyyyMMddHHmmssSSS"); LocalDateTime localDateTime = LocalDateTimeUtil.parse("19940121183604682", "yyyyMMddHHmmssSSS");
Assert.assertEquals("1994-01-21T18:36:04.682", localDateTime.toString()); Assert.assertEquals("1994-01-21T18:36:04.682", Objects.requireNonNull(localDateTime).toString());
localDateTime = LocalDateTimeUtil.parse("1994012118360468", "yyyyMMddHHmmssSS"); localDateTime = LocalDateTimeUtil.parse("1994012118360468", "yyyyMMddHHmmssSS");
Assert.assertEquals("1994-01-21T18:36:04.680", localDateTime.toString()); Assert.assertEquals("1994-01-21T18:36:04.680", Objects.requireNonNull(localDateTime).toString());
localDateTime = LocalDateTimeUtil.parse("199401211836046", "yyyyMMddHHmmssS"); localDateTime = LocalDateTimeUtil.parse("199401211836046", "yyyyMMddHHmmssS");
Assert.assertEquals("1994-01-21T18:36:04.600", localDateTime.toString()); Assert.assertEquals("1994-01-21T18:36:04.600", Objects.requireNonNull(localDateTime).toString());
} }
@Test @Test
@ -91,7 +92,7 @@ public class LocalDateTimeUtilTest {
@Test @Test
public void parseSingleMonthAndDayTest() { public void parseSingleMonthAndDayTest() {
LocalDate localDate = LocalDateTimeUtil.parseDate("2020-1-1", "yyyy-M-d"); final LocalDate localDate = LocalDateTimeUtil.parseDate("2020-1-1", "yyyy-M-d");
Assert.assertEquals("2020-01-01", localDate.toString()); Assert.assertEquals("2020-01-01", localDate.toString());
} }
@ -139,11 +140,12 @@ public class LocalDateTimeUtilTest {
Assert.assertEquals(365, between.toDays()); Assert.assertEquals(365, between.toDays());
} }
@SuppressWarnings("ConstantConditions")
@Test @Test
public void isIn() { public void isIn() {
// 时间范围 8点-9点 // 时间范围 8点-9点
LocalDateTime begin = LocalDateTime.parse("2019-02-02T08:00:00"); final LocalDateTime begin = LocalDateTime.parse("2019-02-02T08:00:00");
LocalDateTime end = LocalDateTime.parse("2019-02-02T09:00:00"); final LocalDateTime end = LocalDateTime.parse("2019-02-02T09:00:00");
// 不在时间范围内 用例 // 不在时间范围内 用例
Assert.assertFalse(LocalDateTimeUtil.isIn(LocalDateTime.parse("2019-02-02T06:00:00"), begin, end)); Assert.assertFalse(LocalDateTimeUtil.isIn(LocalDateTime.parse("2019-02-02T06:00:00"), begin, end));
@ -169,10 +171,10 @@ public class LocalDateTimeUtilTest {
Assert.assertTrue(LocalDateTimeUtil.isIn(begin, end, begin, true, true)); Assert.assertTrue(LocalDateTimeUtil.isIn(begin, end, begin, true, true));
// 比较当前时间范围 // 比较当前时间范围
LocalDateTime now = LocalDateTime.now(); final LocalDateTime now = LocalDateTime.now();
Assert.assertTrue(LocalDateTimeUtil.isIn(now.minusHours(1L), now.plusHours(1L))); Assert.assertTrue(LocalDateTimeUtil.isIn(now, now.minusHours(1L), now.plusHours(1L)));
Assert.assertFalse(LocalDateTimeUtil.isIn(now.minusHours(1L), now.minusHours(2L))); Assert.assertFalse(LocalDateTimeUtil.isIn(now, now.minusHours(1L), now.minusHours(2L)));
Assert.assertFalse(LocalDateTimeUtil.isIn(now.plusHours(1L), now.plusHours(2L))); Assert.assertFalse(LocalDateTimeUtil.isIn(now, now.plusHours(1L), now.plusHours(2L)));
// 异常入参 // 异常入参
Assert.assertThrows(IllegalArgumentException.class, () -> LocalDateTimeUtil.isIn(null, begin, end, false, false)); Assert.assertThrows(IllegalArgumentException.class, () -> LocalDateTimeUtil.isIn(null, begin, end, false, false));
@ -224,24 +226,24 @@ public class LocalDateTimeUtilTest {
@Test @Test
public void isOverlapTest(){ public void isOverlapTest(){
LocalDateTime oneStartTime = LocalDateTime.of(2022, 1, 1, 10, 10, 10); final LocalDateTime oneStartTime = LocalDateTime.of(2022, 1, 1, 10, 10, 10);
LocalDateTime oneEndTime = LocalDateTime.of(2022, 1, 1, 11, 10, 10); final LocalDateTime oneEndTime = LocalDateTime.of(2022, 1, 1, 11, 10, 10);
LocalDateTime oneStartTime2 = LocalDateTime.of(2022, 1, 1, 11, 20, 10); final LocalDateTime oneStartTime2 = LocalDateTime.of(2022, 1, 1, 11, 20, 10);
LocalDateTime oneEndTime2 = LocalDateTime.of(2022, 1, 1, 11, 30, 10); final LocalDateTime oneEndTime2 = LocalDateTime.of(2022, 1, 1, 11, 30, 10);
LocalDateTime oneStartTime3 = LocalDateTime.of(2022, 1, 1, 11, 40, 10); final LocalDateTime oneStartTime3 = LocalDateTime.of(2022, 1, 1, 11, 40, 10);
LocalDateTime oneEndTime3 = LocalDateTime.of(2022, 1, 1, 11, 50, 10); final LocalDateTime oneEndTime3 = LocalDateTime.of(2022, 1, 1, 11, 50, 10);
//真实请假数据 //真实请假数据
LocalDateTime realStartTime = LocalDateTime.of(2022, 1, 1, 11, 49, 10); final LocalDateTime realStartTime = LocalDateTime.of(2022, 1, 1, 11, 49, 10);
LocalDateTime realEndTime = LocalDateTime.of(2022, 1, 1, 12, 0, 10); final LocalDateTime realEndTime = LocalDateTime.of(2022, 1, 1, 12, 0, 10);
LocalDateTime realStartTime1 = DateUtil.parseLocalDateTime("2022-03-01 08:00:00"); final LocalDateTime realStartTime1 = DateUtil.parseLocalDateTime("2022-03-01 08:00:00");
LocalDateTime realEndTime1 = DateUtil.parseLocalDateTime("2022-03-01 10:00:00"); final LocalDateTime realEndTime1 = DateUtil.parseLocalDateTime("2022-03-01 10:00:00");
LocalDateTime startTime = DateUtil.parseLocalDateTime("2022-03-23 05:00:00"); final LocalDateTime startTime = DateUtil.parseLocalDateTime("2022-03-23 05:00:00");
LocalDateTime endTime = DateUtil.parseLocalDateTime("2022-03-23 13:00:00"); final LocalDateTime endTime = DateUtil.parseLocalDateTime("2022-03-23 13:00:00");
Assert.assertFalse(LocalDateTimeUtil.isOverlap(oneStartTime,oneEndTime,realStartTime,realEndTime)); Assert.assertFalse(LocalDateTimeUtil.isOverlap(oneStartTime,oneEndTime,realStartTime,realEndTime));
Assert.assertFalse(LocalDateTimeUtil.isOverlap(oneStartTime2,oneEndTime2,realStartTime,realEndTime)); Assert.assertFalse(LocalDateTimeUtil.isOverlap(oneStartTime2,oneEndTime2,realStartTime,realEndTime));
@ -253,7 +255,7 @@ public class LocalDateTimeUtilTest {
@Test @Test
public void weekOfYearTest(){ public void weekOfYearTest(){
LocalDate date1 = LocalDate.of(2021, 12, 31); final LocalDate date1 = LocalDate.of(2021, 12, 31);
final int weekOfYear1 = LocalDateTimeUtil.weekOfYear(date1); final int weekOfYear1 = LocalDateTimeUtil.weekOfYear(date1);
Assert.assertEquals(52, weekOfYear1); Assert.assertEquals(52, weekOfYear1);
@ -263,7 +265,7 @@ public class LocalDateTimeUtilTest {
@Test @Test
public void weekOfYearTest2(){ public void weekOfYearTest2(){
LocalDate date1 = LocalDate.of(2022, 1, 31); final LocalDate date1 = LocalDate.of(2022, 1, 31);
final int weekOfYear1 = LocalDateTimeUtil.weekOfYear(date1); final int weekOfYear1 = LocalDateTimeUtil.weekOfYear(date1);
Assert.assertEquals(5, weekOfYear1); Assert.assertEquals(5, weekOfYear1);
@ -273,7 +275,7 @@ public class LocalDateTimeUtilTest {
@Test @Test
public void ofTest2(){ public void ofTest2(){
final Instant instant = DateUtil.parse("2022-02-22").toInstant(); final Instant instant = Objects.requireNonNull(DateUtil.parse("2022-02-22")).toInstant();
final LocalDateTime of = LocalDateTimeUtil.of((TemporalAccessor) instant); final LocalDateTime of = LocalDateTimeUtil.of((TemporalAccessor) instant);
Console.log(of); Console.log(of);
} }