From 538874562d68b3316d7d376ecec20714ced32223 Mon Sep 17 00:00:00 2001 From: naooohu Date: Thu, 20 Jan 2022 01:28:58 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=B7=BB=E5=8A=A0=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E6=97=A5=E6=9C=9F=E6=98=AF=E5=90=A6=E4=B8=BA?= =?UTF-8?q?=E4=B8=80=E5=91=A8=EF=BC=88=E5=9B=BD=E5=86=85=E4=B8=80=E5=91=A8?= =?UTF-8?q?=E7=9A=84=E5=BC=80=E5=A7=8B=E4=B8=BA=E5=91=A8=E4=B8=80=EF=BC=8C?= =?UTF-8?q?=E5=9B=BD=E5=A4=96=E4=B8=80=E5=91=A8=E7=9A=84=E5=BC=80=E5=A7=8B?= =?UTF-8?q?=E4=B8=BA=E5=91=A8=E6=97=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/core/date/CalendarUtil.java | 16 +++++++++++ .../java/cn/hutool/core/date/DateUtil.java | 28 +++++++++++++++++++ .../cn/hutool/core/date/DateUtilTest.java | 11 ++++++++ 3 files changed, 55 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java index a1e2f176b..774aabec5 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java @@ -348,6 +348,22 @@ public class CalendarUtil { cal1.get(Calendar.ERA) == cal2.get(Calendar.ERA); } + /** + * 比较两个日期是否为同一周 + * + * @param cal1 日期1 + * @param cal2 日期2 + * @return 是否为同一周 + */ + public static boolean isSameWeek(Calendar cal1, Calendar cal2) { + if (cal1 == null || cal2 == null) { + throw new IllegalArgumentException("The date must not be null"); + } + return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && + cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) && + cal1.get(Calendar.DAY_OF_WEEK) == cal2.get(Calendar.DAY_OF_WEEK); + } + /** * 比较两个日期是否为同一月 * diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java index 813fba971..066777c78 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java @@ -1586,6 +1586,34 @@ public class DateUtil extends CalendarUtil { return CalendarUtil.isSameDay(calendar(date1), calendar(date2)); } + /** + * 比较两个日期是否为同一周 + * + * @param date1 日期1 + * @param date2 日期2 + * @param isMon 是否为周一。国内第一天为星期一,国外第一天为星期日 + * @return 是否为同一周 + */ + public static boolean isSameWeek(final Date date1, final Date date2, boolean isMon) { + if (date1 == null || date2 == null) { + throw new IllegalArgumentException("The date must not be null"); + } + Calendar calendar1 = calendar(date1); + Calendar calendar2 = calendar(date2); + if (isMon) { + calendar1.setFirstDayOfWeek(Calendar.MONDAY); + calendar1.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + calendar2.setFirstDayOfWeek(Calendar.MONDAY); + calendar2.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + } else { + calendar1.setFirstDayOfWeek(Calendar.SUNDAY); + calendar1.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); + calendar2.setFirstDayOfWeek(Calendar.SUNDAY); + calendar2.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); + } + return CalendarUtil.isSameWeek(calendar1, calendar2); + } + /** * 比较两个日期是否为同一月 * diff --git a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java index 24e7321a8..ceab8fe7e 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java @@ -1004,4 +1004,15 @@ public class DateUtilTest { final DateTime parse = DateUtil.parse("2021-12-01", DatePattern.NORM_DATE_FORMATTER); Assert.assertEquals("2021-12-01 00:00:00", parse.toString()); } + + @Test + public void test() { + // 周六与周日比较 + final boolean isSameWeek = DateUtil.isSameWeek(DateTime.of("2022-01-01", "yyyy-MM-dd"), DateTime.of("2022-01-02", "yyyy-MM-dd"), true); + Assert.assertTrue(isSameWeek); + // 周日与周一比较 + final boolean isSameWeek1 = DateUtil.isSameWeek(DateTime.of("2022-01-02", "yyyy-MM-dd"), DateTime.of("2022-01-03", "yyyy-MM-dd"), false); + Assert.assertTrue(isSameWeek1); + + } }