From c0496353d44c0c3e620b061fefa0c64e034490f7 Mon Sep 17 00:00:00 2001 From: duandazhi Date: Tue, 13 Apr 2021 16:36:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1=E3=80=81DateUtil.compare(Date=20date1,=20?= =?UTF-8?q?Date=20date2,=20String=20format)=20=20add=20=20overload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/date/DateUtil.java | 23 +++++++++++++++++++ .../cn/hutool/core/date/DateUtilTest.java | 11 +++++++++ 2 files changed, 34 insertions(+) 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 d10f3cdc0..f2688e439 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 @@ -1883,6 +1883,29 @@ public class DateUtil extends CalendarUtil { return CompareUtil.compare(date1, date2); } + /** + * {@code null}安全的日期比较,并只比较指定格式; {@code null}对象排在末尾, 并指定日期格式; + * + * + * @param date1 日期1 + * @param date2 日期2 + * @param format 日期格式,常用格式见: {@link DatePattern}; 允许为空; date1 date2; eg: yyyy-MM-dd + * @return 比较结果,如果date1 < date2,返回数小于0,date1==date2返回0,date1 > date2 大于0 + * @since 5.6.4 + * @author dazer + */ + public static int compare(Date date1, Date date2, String format) { + if (format != null) { + if (date1 != null) { + date1 = parse(format(date1, format), format); + } + if (date2 != null) { + date2 = parse(format(date2, format), format); + } + } + return CompareUtil.compare(date1, date2); + } + /** * 纳秒转毫秒 * 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 0e530a269..61e72ea89 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 @@ -698,6 +698,17 @@ public class DateUtilTest { Assert.assertEquals(rangeToList.get(1), DateUtil.parse("2017-01-02")); } + @Test + public void compareTest() { + Date date1 = DateUtil.parse("2021-04-13 23:59:59.999"); + Date date2 = DateUtil.parse("2021-04-13 23:10:10"); + + Assert.assertEquals(1, DateUtil.compare(date1, date2)); + Assert.assertEquals(1, DateUtil.compare(date1, date2, DatePattern.NORM_DATETIME_PATTERN)); + Assert.assertEquals(0, DateUtil.compare(date1, date2, DatePattern.NORM_DATE_PATTERN)); + Assert.assertEquals(0, DateUtil.compare(date1, date2, DatePattern.NORM_DATETIME_MINUTE_PATTERN)); + } + @Test public void yearAndQTest() { String yearAndQuarter = DateUtil.yearAndQuarter(DateUtil.parse("2018-12-01")); From 8847775c82818997ab8c9d820a34463700ecc396 Mon Sep 17 00:00:00 2001 From: duandazhi Date: Tue, 13 Apr 2021 16:40:34 +0800 Subject: [PATCH 2/2] add Test --- .../src/test/java/cn/hutool/core/date/DateUtilTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 61e72ea89..49a1851a6 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 @@ -701,12 +701,17 @@ public class DateUtilTest { @Test public void compareTest() { Date date1 = DateUtil.parse("2021-04-13 23:59:59.999"); - Date date2 = DateUtil.parse("2021-04-13 23:10:10"); + Date date2 = DateUtil.parse("2021-04-13 23:59:10"); Assert.assertEquals(1, DateUtil.compare(date1, date2)); Assert.assertEquals(1, DateUtil.compare(date1, date2, DatePattern.NORM_DATETIME_PATTERN)); Assert.assertEquals(0, DateUtil.compare(date1, date2, DatePattern.NORM_DATE_PATTERN)); Assert.assertEquals(0, DateUtil.compare(date1, date2, DatePattern.NORM_DATETIME_MINUTE_PATTERN)); + + + Date date11 = DateUtil.parse("2021-04-13 23:59:59.999"); + Date date22 = DateUtil.parse("2021-04-11 23:10:10"); + Assert.assertEquals(0, DateUtil.compare(date11, date22, DatePattern.NORM_MONTH_PATTERN)); } @Test