From a22f4d686af8b44de3aeb7f4ef63929e83d0fa59 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 31 Jul 2024 15:46:15 +0800 Subject: [PATCH] fix code --- .../hutool/core/date/CalendarUtil.java | 81 ++++++++----------- .../hutool/core/date/DateModifier.java | 2 +- .../dromara/hutool/core/date/DateUtil.java | 62 ++++++-------- .../hutool/core/date/DateModifierTest.java | 28 +++---- .../hutool/core/date/DateTimeTest.java | 2 +- .../hutool/core/date/DateUtilTest.java | 20 ++--- .../hutool/cron/pattern/CronPatternUtil.java | 2 +- 7 files changed, 85 insertions(+), 112 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/CalendarUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/CalendarUtil.java index 32f3fadb0..2e621aace 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/CalendarUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/CalendarUtil.java @@ -158,17 +158,6 @@ public class CalendarUtil { return DateModifier.modify(calendar, dateField.getValue(), DateModifier.ModifyType.ROUND); } - /** - * 修改日期为某个时间字段结束时间 - * - * @param calendar {@link Calendar} - * @param dateField 保留到的时间字段,如定义为 {@link DateField#SECOND},表示这个字段不变,这个字段以下字段全部取最大值 - * @return 原{@link Calendar} - */ - public static Calendar ceiling(final Calendar calendar, final DateField dateField) { - return DateModifier.modify(calendar, dateField.getValue(), DateModifier.ModifyType.CEILING); - } - /** * 修改日期为某个时间字段结束时间
* 可选是否归零毫秒。 @@ -200,12 +189,13 @@ public class CalendarUtil { /** * 修改秒级别的结束时间,即毫秒设置为999 * - * @param calendar 日期 {@link Calendar} + * @param calendar 日期 {@link Calendar} + * @param truncateMillisecond 是否毫秒归零 * @return {@link Calendar} * @since 4.6.2 */ - public static Calendar endOfSecond(final Calendar calendar) { - return ceiling(calendar, DateField.SECOND); + public static Calendar endOfSecond(final Calendar calendar, final boolean truncateMillisecond) { + return ceiling(calendar, DateField.SECOND, truncateMillisecond); } /** @@ -221,11 +211,12 @@ public class CalendarUtil { /** * 修改某小时的结束时间 * - * @param calendar 日期 {@link Calendar} + * @param calendar 日期 {@link Calendar} + * @param truncateMillisecond 是否毫秒归零 * @return {@link Calendar} */ - public static Calendar endOfHour(final Calendar calendar) { - return ceiling(calendar, DateField.HOUR_OF_DAY); + public static Calendar endOfHour(final Calendar calendar, final boolean truncateMillisecond) { + return ceiling(calendar, DateField.HOUR_OF_DAY, truncateMillisecond); } /** @@ -241,11 +232,12 @@ public class CalendarUtil { /** * 修改某分钟的结束时间 * - * @param calendar 日期 {@link Calendar} + * @param calendar 日期 {@link Calendar} + * @param truncateMillisecond 是否毫秒归零 * @return {@link Calendar} */ - public static Calendar endOfMinute(final Calendar calendar) { - return ceiling(calendar, DateField.MINUTE); + public static Calendar endOfMinute(final Calendar calendar, final boolean truncateMillisecond) { + return ceiling(calendar, DateField.MINUTE, truncateMillisecond); } /** @@ -261,11 +253,12 @@ public class CalendarUtil { /** * 修改某天的结束时间 * - * @param calendar 日期 {@link Calendar} + * @param calendar 日期 {@link Calendar} + * @param truncateMillisecond 是否毫秒归零 * @return {@link Calendar} */ - public static Calendar endOfDay(final Calendar calendar) { - return ceiling(calendar, DateField.DAY_OF_MONTH); + public static Calendar endOfDay(final Calendar calendar, final boolean truncateMillisecond) { + return ceiling(calendar, DateField.DAY_OF_MONTH, truncateMillisecond); } /** @@ -292,27 +285,18 @@ public class CalendarUtil { return truncate(calendar, DateField.WEEK_OF_MONTH); } - /** - * 修改某周的结束时间,周日定为一周的结束 - * - * @param calendar 日期 {@link Calendar} - * @return {@link Calendar} - */ - public static Calendar endOfWeek(final Calendar calendar) { - return endOfWeek(calendar, true); - } - /** * 修改某周的结束时间 * - * @param calendar 日期 {@link Calendar} - * @param isSundayAsLastDay 是否周日做为一周的最后一天(false表示周六做为最后一天) + * @param calendar 日期 {@link Calendar} + * @param isSundayAsLastDay 是否周日做为一周的最后一天(false表示周六做为最后一天) + * @param truncateMillisecond 是否毫秒归零 * @return {@link Calendar} */ - public static Calendar endOfWeek(final Calendar calendar, final boolean isSundayAsLastDay) { + public static Calendar endOfWeek(final Calendar calendar, final boolean isSundayAsLastDay, final boolean truncateMillisecond) { calendar.setFirstDayOfWeek(isSundayAsLastDay ? Calendar.MONDAY : Calendar.SUNDAY); // WEEK_OF_MONTH为上限的字段(不包括),实际调整的为DAY_OF_MONTH - return ceiling(calendar, DateField.WEEK_OF_MONTH); + return ceiling(calendar, DateField.WEEK_OF_MONTH, truncateMillisecond); } /** @@ -328,11 +312,12 @@ public class CalendarUtil { /** * 修改某月的结束时间 * - * @param calendar 日期 {@link Calendar} + * @param calendar 日期 {@link Calendar} + * @param truncateMillisecond 是否毫秒归零 * @return {@link Calendar} */ - public static Calendar endOfMonth(final Calendar calendar) { - return ceiling(calendar, DateField.MONTH); + public static Calendar endOfMonth(final Calendar calendar, final boolean truncateMillisecond) { + return ceiling(calendar, DateField.MONTH, truncateMillisecond); } /** @@ -352,19 +337,20 @@ public class CalendarUtil { /** * 获取某季度的结束时间 * - * @param calendar 日期 {@link Calendar} + * @param calendar 日期 {@link Calendar} + * @param truncateMillisecond 是否毫秒归零 * @return {@link Calendar} * @since 4.1.0 */ @SuppressWarnings({"MagicConstant", "ConstantConditions"}) - public static Calendar endOfQuarter(final Calendar calendar) { + public static Calendar endOfQuarter(final Calendar calendar, final boolean truncateMillisecond) { final int year = calendar.get(Calendar.YEAR); final int month = calendar.get(DateField.MONTH.getValue()) / 3 * 3 + 2; final Calendar resultCal = Calendar.getInstance(calendar.getTimeZone()); resultCal.set(year, month, Month.of(month).getLastDay(DateUtil.isLeapYear(year))); - return endOfDay(resultCal); + return endOfDay(resultCal, truncateMillisecond); } /** @@ -380,11 +366,12 @@ public class CalendarUtil { /** * 修改某年的结束时间 * - * @param calendar 日期 {@link Calendar} + * @param calendar 日期 {@link Calendar} + * @param truncateMillisecond 是否毫秒归零 * @return {@link Calendar} */ - public static Calendar endOfYear(final Calendar calendar) { - return ceiling(calendar, DateField.YEAR); + public static Calendar endOfYear(final Calendar calendar, final boolean truncateMillisecond) { + return ceiling(calendar, DateField.YEAR, truncateMillisecond); } // endregion @@ -611,7 +598,7 @@ public class CalendarUtil { * @since 5.0.5 */ public static LocalDateTime toLocalDateTime(final Calendar calendar) { - if(null == calendar){ + if (null == calendar) { return null; } return LocalDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId()); diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/DateModifier.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/DateModifier.java index 5f6858b46..eca2285a2 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/DateModifier.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/DateModifier.java @@ -91,7 +91,7 @@ public class DateModifier { break; } // 处理下一级别字段 - return modify(calendar, dateField + 1, modifyType); + return modify(calendar, dateField + 1, modifyType, truncateMillisecond); } final int endField = truncateMillisecond ? Calendar.SECOND : Calendar.MILLISECOND; diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/DateUtil.java index 76e90905a..aa17ab4dc 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/DateUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/DateUtil.java @@ -831,18 +831,6 @@ public class DateUtil { return new DateTime(CalendarUtil.round(CalendarUtil.calendar(date), dateField)); } - /** - * 修改日期为某个时间字段结束时间 - * - * @param date {@link Date} - * @param dateField 保留到的时间字段,如定义为 {@link DateField#SECOND},表示这个字段不变,这个字段以下字段全部取最大值 - * @return {@link DateTime} - * @since 4.5.7 - */ - public static DateTime ceiling(final Date date, final DateField dateField) { - return new DateTime(CalendarUtil.ceiling(CalendarUtil.calendar(date), dateField)); - } - /** * 修改日期为某个时间字段结束时间
* 可选是否归零毫秒。 @@ -876,11 +864,12 @@ public class DateUtil { * 获取秒级别的结束时间,即毫秒设置为999 * * @param date 日期 + * @param truncateMillisecond 是否毫秒归零 * @return {@link DateTime} * @since 4.6.2 */ - public static DateTime endOfSecond(final Date date) { - return new DateTime(CalendarUtil.endOfSecond(CalendarUtil.calendar(date))); + public static DateTime endOfSecond(final Date date, final boolean truncateMillisecond) { + return new DateTime(CalendarUtil.endOfSecond(CalendarUtil.calendar(date), truncateMillisecond)); } /** @@ -897,10 +886,11 @@ public class DateUtil { * 获取某小时的结束时间 * * @param date 日期 + * @param truncateMillisecond 是否毫秒归零 * @return {@link DateTime} */ - public static DateTime endOfHour(final Date date) { - return new DateTime(CalendarUtil.endOfHour(CalendarUtil.calendar(date))); + public static DateTime endOfHour(final Date date, final boolean truncateMillisecond) { + return new DateTime(CalendarUtil.endOfHour(CalendarUtil.calendar(date), truncateMillisecond)); } /** @@ -917,10 +907,11 @@ public class DateUtil { * 获取某分钟的结束时间 * * @param date 日期 + * @param truncateMillisecond 是否毫秒归零 * @return {@link DateTime} */ - public static DateTime endOfMinute(final Date date) { - return new DateTime(CalendarUtil.endOfMinute(CalendarUtil.calendar(date))); + public static DateTime endOfMinute(final Date date, final boolean truncateMillisecond) { + return new DateTime(CalendarUtil.endOfMinute(CalendarUtil.calendar(date), truncateMillisecond)); } /** @@ -937,10 +928,11 @@ public class DateUtil { * 获取某天的结束时间 * * @param date 日期 + * @param truncateMillisecond 是否毫秒归零 * @return {@link DateTime} */ - public static DateTime endOfDay(final Date date) { - return new DateTime(CalendarUtil.endOfDay(CalendarUtil.calendar(date))); + public static DateTime endOfDay(final Date date, final boolean truncateMillisecond) { + return new DateTime(CalendarUtil.endOfDay(CalendarUtil.calendar(date), truncateMillisecond)); } /** @@ -965,26 +957,17 @@ public class DateUtil { return new DateTime(CalendarUtil.beginOfWeek(CalendarUtil.calendar(date), isMondayAsFirstDay)); } - /** - * 获取某周的结束时间,周日定为一周的结束 - * - * @param date 日期 - * @return {@link DateTime} - */ - public static DateTime endOfWeek(final Date date) { - return new DateTime(CalendarUtil.endOfWeek(CalendarUtil.calendar(date))); - } - /** * 获取某周的结束时间 * * @param date 日期 * @param isSundayAsLastDay 是否周日做为一周的最后一天(false表示周六做为最后一天) + * @param truncateMillisecond 是否毫秒归零 * @return {@link DateTime} * @since 5.4.0 */ - public static DateTime endOfWeek(final Date date, final boolean isSundayAsLastDay) { - return new DateTime(CalendarUtil.endOfWeek(CalendarUtil.calendar(date), isSundayAsLastDay)); + public static DateTime endOfWeek(final Date date, final boolean isSundayAsLastDay, final boolean truncateMillisecond) { + return new DateTime(CalendarUtil.endOfWeek(CalendarUtil.calendar(date), isSundayAsLastDay, truncateMillisecond)); } /** @@ -1001,10 +984,11 @@ public class DateUtil { * 获取某月的结束时间 * * @param date 日期 + * @param truncateMillisecond 是否毫秒归零 * @return {@link DateTime} */ - public static DateTime endOfMonth(final Date date) { - return new DateTime(CalendarUtil.endOfMonth(CalendarUtil.calendar(date))); + public static DateTime endOfMonth(final Date date, final boolean truncateMillisecond) { + return new DateTime(CalendarUtil.endOfMonth(CalendarUtil.calendar(date), truncateMillisecond)); } /** @@ -1021,10 +1005,11 @@ public class DateUtil { * 获取某季度的结束时间 * * @param date 日期 + * @param truncateMillisecond 是否毫秒归零 * @return {@link DateTime} */ - public static DateTime endOfQuarter(final Date date) { - return new DateTime(CalendarUtil.endOfQuarter(CalendarUtil.calendar(date))); + public static DateTime endOfQuarter(final Date date, final boolean truncateMillisecond) { + return new DateTime(CalendarUtil.endOfQuarter(CalendarUtil.calendar(date), truncateMillisecond)); } /** @@ -1041,10 +1026,11 @@ public class DateUtil { * 获取某年的结束时间 * * @param date 日期 + * @param truncateMillisecond 是否毫秒归零 * @return {@link DateTime} */ - public static DateTime endOfYear(final Date date) { - return new DateTime(CalendarUtil.endOfYear(CalendarUtil.calendar(date))); + public static DateTime endOfYear(final Date date, final boolean truncateMillisecond) { + return new DateTime(CalendarUtil.endOfYear(CalendarUtil.calendar(date), truncateMillisecond)); } /** diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/date/DateModifierTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/date/DateModifierTest.java index 71af85b6f..8b9d1d47c 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/date/DateModifierTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/date/DateModifierTest.java @@ -85,52 +85,52 @@ public class DateModifierTest { final Date date = DateUtil.parse(dateStr); // 毫秒 - DateTime begin = DateUtil.ceiling(date, DateField.MILLISECOND); + DateTime begin = DateUtil.ceiling(date, DateField.MILLISECOND, false); Assertions.assertEquals(dateStr, begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); // 秒 - begin = DateUtil.ceiling(date, DateField.SECOND); + begin = DateUtil.ceiling(date, DateField.SECOND, false); Assertions.assertEquals("2017-03-01 22:33:23.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); // 分 - begin = DateUtil.ceiling(date, DateField.MINUTE); + begin = DateUtil.ceiling(date, DateField.MINUTE, false); Assertions.assertEquals("2017-03-01 22:33:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); // 小时 - begin = DateUtil.ceiling(date, DateField.HOUR); + begin = DateUtil.ceiling(date, DateField.HOUR, false); Assertions.assertEquals("2017-03-01 22:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); - begin = DateUtil.ceiling(date, DateField.HOUR_OF_DAY); + begin = DateUtil.ceiling(date, DateField.HOUR_OF_DAY, false); Assertions.assertEquals("2017-03-01 22:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); // 上下午,原始日期是22点,上下午的结束就是23点 - begin = DateUtil.ceiling(date, DateField.AM_PM); + begin = DateUtil.ceiling(date, DateField.AM_PM, false); Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); // 天,day of xxx按照day处理 - begin = DateUtil.ceiling(date, DateField.DAY_OF_WEEK_IN_MONTH); + begin = DateUtil.ceiling(date, DateField.DAY_OF_WEEK_IN_MONTH, false); Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); - begin = DateUtil.ceiling(date, DateField.DAY_OF_WEEK); + begin = DateUtil.ceiling(date, DateField.DAY_OF_WEEK, false); Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); - begin = DateUtil.ceiling(date, DateField.DAY_OF_MONTH); + begin = DateUtil.ceiling(date, DateField.DAY_OF_MONTH, false); Assertions.assertEquals("2017-03-01 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); // 星期 - begin = DateUtil.ceiling(date, DateField.WEEK_OF_MONTH); + begin = DateUtil.ceiling(date, DateField.WEEK_OF_MONTH, false); Assertions.assertEquals("2017-03-05 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); - begin = DateUtil.ceiling(date, DateField.WEEK_OF_YEAR); + begin = DateUtil.ceiling(date, DateField.WEEK_OF_YEAR, false); Assertions.assertEquals("2017-03-05 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); // 月 - begin = DateUtil.ceiling(date, DateField.MONTH); + begin = DateUtil.ceiling(date, DateField.MONTH, false); Assertions.assertEquals("2017-03-31 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); // 年 - begin = DateUtil.ceiling(date, DateField.YEAR); + begin = DateUtil.ceiling(date, DateField.YEAR, false); Assertions.assertEquals("2017-12-31 23:59:59.999", begin.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); } @Test - public void roundTest(){ + public void roundTest() { // issues#I5M2I0 final String dateStr = "2022-08-12 14:59:21.500"; final Date date = DateUtil.parse(dateStr); diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/date/DateTimeTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/date/DateTimeTest.java index 8243e1e5f..8f6de7f8e 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/date/DateTimeTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/date/DateTimeTest.java @@ -92,7 +92,7 @@ public class DateTimeTest { // 精确到毫秒 final DateTime endTime = new DateTime("2017-12-31 23:59:59.999", DatePattern.NORM_DATETIME_MS_FORMAT); - dateTime = DateUtil.endOfQuarter(dateTime); + dateTime = DateUtil.endOfQuarter(dateTime, false); Assertions.assertEquals(endTime, dateTime); } diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/date/DateUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/date/DateUtilTest.java index fda425535..9470cd370 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/date/DateUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/date/DateUtilTest.java @@ -113,14 +113,14 @@ public class DateUtilTest { final Date beginOfDay = DateUtil.beginOfDay(date); Assertions.assertEquals("2017-03-01 00:00:00", beginOfDay.toString()); // 一天的结束 - final Date endOfDay = DateUtil.endOfDay(date); + final Date endOfDay = DateUtil.endOfDay(date, false); Assertions.assertEquals("2017-03-01 23:59:59", endOfDay.toString()); } @Test public void endOfDayTest() { final Date parse = DateUtil.parse("2020-05-31 00:00:00"); - Assertions.assertEquals("2020-05-31 23:59:59", DateUtil.endOfDay(parse).toString()); + Assertions.assertEquals("2020-05-31 23:59:59", DateUtil.endOfDay(parse, false).toString()); } @Test @@ -137,7 +137,7 @@ public class DateUtilTest { final Date date2 = DateUtil.parse(dateStr2); - DateTime dateTime = DateUtil.ceiling(date2, DateField.MINUTE); + DateTime dateTime = DateUtil.ceiling(date2, DateField.MINUTE, false); Assertions.assertEquals("2020-02-29 12:59:59.999", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); dateTime = DateUtil.ceiling(date2, DateField.MINUTE, true); @@ -150,7 +150,7 @@ public class DateUtilTest { final Date date2 = DateUtil.parse(dateStr2); - DateTime dateTime = DateUtil.ceiling(date2, DateField.DAY_OF_MONTH); + DateTime dateTime = DateUtil.ceiling(date2, DateField.DAY_OF_MONTH, false); Assertions.assertEquals("2020-02-29 23:59:59.999", dateTime.toString(DatePattern.NORM_DATETIME_MS_PATTERN)); dateTime = DateUtil.ceiling(date2, DateField.DAY_OF_MONTH, true); @@ -167,7 +167,7 @@ public class DateUtilTest { final Date beginOfWeek = DateUtil.beginOfWeek(date); Assertions.assertEquals("2017-02-27 00:00:00", beginOfWeek.toString()); // 一周的结束 - final Date endOfWeek = DateUtil.endOfWeek(date); + final Date endOfWeek = DateUtil.endOfWeek(date, true, false); Assertions.assertEquals("2017-03-05 23:59:59", endOfWeek.toString()); final Calendar calendar = CalendarUtil.calendar(date); @@ -175,7 +175,7 @@ public class DateUtilTest { final Calendar begin = CalendarUtil.beginOfWeek(calendar); Assertions.assertEquals("2017-02-27 00:00:00", DateUtil.date(begin).toString()); // 一周的结束 - final Calendar end = CalendarUtil.endOfWeek(calendar); + final Calendar end = CalendarUtil.endOfWeek(calendar, true, false); Assertions.assertEquals("2017-03-05 23:59:59", DateUtil.date(end).toString()); } @@ -188,7 +188,7 @@ public class DateUtilTest { Assertions.assertEquals("2020-03-08 00:00:00", DateUtil.date(begin).toString()); final Calendar calendar2 = date.toCalendar(); - final Calendar end = CalendarUtil.endOfWeek(calendar2, false); + final Calendar end = CalendarUtil.endOfWeek(calendar2, false, false); Assertions.assertEquals("2020-03-14 23:59:59", DateUtil.date(end).toString()); } @@ -743,14 +743,14 @@ public class DateUtilTest { public void endOfYearTest() { final DateTime date = DateUtil.now(); date.setField(DateField.YEAR, 2019); - final DateTime endOfYear = DateUtil.endOfYear(date); + final DateTime endOfYear = DateUtil.endOfYear(date, false); Assertions.assertEquals("2019-12-31 23:59:59", endOfYear.toString()); } @Test public void endOfQuarterTest() { final Date date = DateUtil.endOfQuarter( - DateUtil.parse("2020-05-31 00:00:00")); + DateUtil.parse("2020-05-31 00:00:00"), false); Assertions.assertEquals("2020-06-30 23:59:59", DateUtil.format(date, "yyyy-MM-dd HH:mm:ss")); } @@ -762,7 +762,7 @@ public class DateUtilTest { final DateTime startOfWeek = DateUtil.beginOfWeek(now); Assertions.assertEquals("2019-09-09 00:00:00", startOfWeek.toString()); - final DateTime endOfWeek = DateUtil.endOfWeek(now); + final DateTime endOfWeek = DateUtil.endOfWeek(now, true, false); Assertions.assertEquals("2019-09-15 23:59:59", endOfWeek.toString()); final long between = DateUtil.between(endOfWeek, startOfWeek, DateUnit.DAY); diff --git a/hutool-cron/src/main/java/org/dromara/hutool/cron/pattern/CronPatternUtil.java b/hutool-cron/src/main/java/org/dromara/hutool/cron/pattern/CronPatternUtil.java index a8d232ec9..d423bb9f5 100644 --- a/hutool-cron/src/main/java/org/dromara/hutool/cron/pattern/CronPatternUtil.java +++ b/hutool-cron/src/main/java/org/dromara/hutool/cron/pattern/CronPatternUtil.java @@ -50,7 +50,7 @@ public class CronPatternUtil { * @return 日期列表 */ public static List matchedDates(final String patternStr, final Date start, final int count) { - return matchedDates(patternStr, start, DateUtil.endOfYear(start), count); + return matchedDates(patternStr, start, DateUtil.endOfYear(start, false), count); } /**