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 6b3051f3e..ac09b1f38 100755
--- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
@@ -62,10 +62,19 @@ public class DateUtil extends CalendarUtil {
*
* @return 当前时间
*/
- public static DateTime date() {
+ public static DateTime now() {
return new DateTime();
}
+ /**
+ * 当天开始的时间,结果类似:2022-10-26 00:00:00
+ *
+ * @return 当天开始的时间
+ */
+ public static DateTime today() {
+ return new DateTime(beginOfDay(Calendar.getInstance()));
+ }
+
/**
* 当前时间,转换为{@link DateTime}对象,忽略毫秒部分
*
@@ -73,7 +82,7 @@ public class DateUtil extends CalendarUtil {
* @since 4.6.2
*/
public static DateTime dateSecond() {
- return beginOfSecond(date());
+ return beginOfSecond(now());
}
/**
@@ -393,56 +402,56 @@ public class DateUtil extends CalendarUtil {
* @return 今年
*/
public static int thisYear() {
- return year(date());
+ return year(now());
}
/**
* @return 当前月份
*/
public static int thisMonth() {
- return month(date());
+ return month(now());
}
/**
* @return 当前月份 {@link Month}
*/
public static Month thisMonthEnum() {
- return monthEnum(date());
+ return monthEnum(now());
}
/**
* @return 当前日期所在年份的第几周
*/
public static int thisWeekOfYear() {
- return weekOfYear(date());
+ return weekOfYear(now());
}
/**
* @return 当前日期所在月份的第几周
*/
public static int thisWeekOfMonth() {
- return weekOfMonth(date());
+ return weekOfMonth(now());
}
/**
* @return 当前日期是这个日期所在月份的第几天
*/
public static int thisDayOfMonth() {
- return dayOfMonth(date());
+ return dayOfMonth(now());
}
/**
* @return 当前日期是星期几
*/
public static int thisDayOfWeek() {
- return dayOfWeek(date());
+ return dayOfWeek(now());
}
/**
* @return 当前日期是星期几 {@link Week}
*/
public static Week thisDayOfWeekEnum() {
- return dayOfWeekEnum(date());
+ return dayOfWeekEnum(now());
}
/**
@@ -450,28 +459,28 @@ public class DateUtil extends CalendarUtil {
* @return 当前日期的小时数部分
*/
public static int thisHour(final boolean is24HourClock) {
- return hour(date(), is24HourClock);
+ return hour(now(), is24HourClock);
}
/**
* @return 当前日期的分钟数部分
*/
public static int thisMinute() {
- return minute(date());
+ return minute(now());
}
/**
* @return 当前日期的秒数部分
*/
public static int thisSecond() {
- return second(date());
+ return second(now());
}
/**
* @return 当前日期的毫秒数部分
*/
public static int thisMillisecond() {
- return millisecond(date());
+ return millisecond(now());
}
// -------------------------------------------------------------- Part of Date end
@@ -1408,7 +1417,7 @@ public class DateUtil extends CalendarUtil {
final long thisMills = date.getTime();
final long beginMills = beginDate.getTime();
- final long endMills = endDate.getTime();
+ final long endMills = endDate.getTime();
final long rangeMin = Math.min(beginMills, endMills);
final long rangeMax = Math.max(beginMills, endMills);
@@ -1584,7 +1593,7 @@ public class DateUtil extends CalendarUtil {
* @return 年龄
*/
public static int ageOfNow(final Date birthDay) {
- return age(birthDay, date());
+ return age(birthDay, now());
}
/**
@@ -1607,7 +1616,7 @@ public class DateUtil extends CalendarUtil {
public static int age(final Date birthday, Date dateToCompare) {
Assert.notNull(birthday, "Birthday can not be null !");
if (null == dateToCompare) {
- dateToCompare = date();
+ dateToCompare = now();
}
return age(birthday.getTime(), dateToCompare.getTime());
}
@@ -2006,21 +2015,23 @@ public class DateUtil extends CalendarUtil {
/**
* 是否为本月最后一天
+ *
* @param date {@link Date}
* @return 是否为本月最后一天
* @since 5.8.8
*/
- public static boolean isLastDayOfMonth(final Date date){
+ public static boolean isLastDayOfMonth(final Date date) {
return date(date).isLastDayOfMonth();
}
/**
* 获得本月的最后一天
+ *
* @param date {@link Date}
* @return 天
* @since 5.8.8
*/
- public static int getLastDayOfMonth(final Date date){
+ public static int getLastDayOfMonth(final Date date) {
return date(date).getLastDayOfMonth();
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/date/TimeUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/TimeUtil.java
index 4111ad5aa..a849bdab3 100644
--- a/hutool-core/src/main/java/cn/hutool/core/date/TimeUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/date/TimeUtil.java
@@ -1,9 +1,9 @@
package cn.hutool.core.date;
import cn.hutool.core.date.format.GlobalCustomFormat;
-import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.regex.ReUtil;
import cn.hutool.core.text.StrUtil;
+import cn.hutool.core.util.ObjUtil;
import java.time.DayOfWeek;
import java.time.Duration;
@@ -22,6 +22,7 @@ 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.util.Date;
@@ -35,7 +36,7 @@ import java.util.TimeZone;
* @see DatePattern 常用格式工具类
* @since 6.0.0
*/
-public class TimeUtil extends TemporalAccessorUtil{
+public class TimeUtil extends TemporalAccessorUtil {
/**
* 当前时间,默认时区
@@ -171,8 +172,8 @@ public class TimeUtil extends TemporalAccessorUtil{
return ((LocalDate) temporalAccessor).atStartOfDay();
} else if (temporalAccessor instanceof Instant) {
return LocalDateTime.ofInstant((Instant) temporalAccessor, ZoneId.systemDefault());
- } else if(temporalAccessor instanceof ZonedDateTime){
- return ((ZonedDateTime)temporalAccessor).toLocalDateTime();
+ } else if (temporalAccessor instanceof ZonedDateTime) {
+ return ((ZonedDateTime) temporalAccessor).toLocalDateTime();
}
return LocalDateTime.of(
@@ -224,7 +225,7 @@ public class TimeUtil extends TemporalAccessorUtil{
public static LocalDateTime parseByISO(final CharSequence text) {
if (StrUtil.contains(text, 'T')) {
return parse(text, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
- }else{
+ } else {
return parse(text, DatePattern.NORM_DATETIME_FORMATTER);
}
}
@@ -448,6 +449,16 @@ public class TimeUtil extends TemporalAccessorUtil{
return time.with(LocalTime.MAX);
}
+ /**
+ * 获取给定日期月底的时间
+ *
+ * @param time 日期时间
+ * @return 月底
+ */
+ public static LocalDateTime endOfMonth(final LocalDateTime time) {
+ return time.with(TemporalAdjusters.lastDayOfMonth());
+ }
+
/**
* 是否为周末(周六或周日)
*
diff --git a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java
index f753d54d5..80d519ee7 100755
--- a/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/IdcardUtil.java
@@ -475,7 +475,7 @@ public class IdcardUtil {
* @return 年龄
*/
public static int getAge(final String idcard) {
- return getAge(idcard, DateUtil.date());
+ return getAge(idcard, DateUtil.now());
}
/**
diff --git a/hutool-core/src/main/java/cn/hutool/core/util/RandomUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/RandomUtil.java
index 12364e7f8..6e9fb6bc3 100755
--- a/hutool-core/src/main/java/cn/hutool/core/util/RandomUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/RandomUtil.java
@@ -652,7 +652,7 @@ public class RandomUtil {
* @since 4.0.8
*/
public static DateTime randomDay(final int min, final int max) {
- return randomDate(DateUtil.date(), DateField.DAY_OF_YEAR, min, max);
+ return randomDate(DateUtil.now(), DateField.DAY_OF_YEAR, min, max);
}
/**
@@ -667,7 +667,7 @@ public class RandomUtil {
*/
public static DateTime randomDate(Date baseDate, final DateField dateField, final int min, final int max) {
if (null == baseDate) {
- baseDate = DateUtil.date();
+ baseDate = DateUtil.now();
}
return DateUtil.offset(baseDate, dateField, randomInt(min, max));
diff --git a/hutool-core/src/test/java/cn/hutool/core/convert/DateConvertTest.java b/hutool-core/src/test/java/cn/hutool/core/convert/DateConvertTest.java
index 896b339d0..eaf59f93e 100644
--- a/hutool-core/src/test/java/cn/hutool/core/convert/DateConvertTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/convert/DateConvertTest.java
@@ -17,7 +17,7 @@ public class DateConvertTest {
final Date value = Convert.toDate(a);
Assert.assertEquals(a, DateUtil.formatDate(value));
- final long timeLong = DateUtil.date().getTime();
+ final long timeLong = DateUtil.now().getTime();
final Date value2 = Convert.toDate(timeLong);
Assert.assertEquals(timeLong, value2.getTime());
}
@@ -48,7 +48,7 @@ public class DateConvertTest {
final java.sql.Date value = Convert.convert(java.sql.Date.class, a);
Assert.assertEquals("2017-05-06", value.toString());
- final long timeLong = DateUtil.date().getTime();
+ final long timeLong = DateUtil.now().getTime();
final java.sql.Date value2 = Convert.convert(java.sql.Date.class, timeLong);
Assert.assertEquals(timeLong, value2.getTime());
}
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 21dd97014..3adc51deb 100755
--- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java
@@ -39,7 +39,7 @@ public class DateUtilTest {
@Test
public void nowTest() {
// 当前时间
- final Date date = DateUtil.date();
+ final Date date = DateUtil.now();
Assert.assertNotNull(date);
// 当前时间
final Date date2 = DateUtil.date(Calendar.getInstance());
@@ -56,6 +56,12 @@ public class DateUtilTest {
Assert.assertNotNull(today);
}
+ @Test
+ public void todayTest() {
+ final String s = DateUtil.today().toString();
+ Assert.assertTrue(s.endsWith("00:00:00"));
+ }
+
@Test
public void formatAndParseTest() {
final String dateStr = "2017-03-01";
@@ -737,7 +743,7 @@ public class DateUtilTest {
@Test
public void endOfYearTest() {
- final DateTime date = DateUtil.date();
+ final DateTime date = DateUtil.now();
date.setField(DateField.YEAR, 2019);
final DateTime endOfYear = DateUtil.endOfYear(date);
Assert.assertEquals("2019-12-31 23:59:59", endOfYear.toString());
diff --git a/hutool-core/src/test/java/cn/hutool/core/net/UrlBuilderTest.java b/hutool-core/src/test/java/cn/hutool/core/net/UrlBuilderTest.java
index 765b26917..15d824c8d 100644
--- a/hutool-core/src/test/java/cn/hutool/core/net/UrlBuilderTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/net/UrlBuilderTest.java
@@ -229,7 +229,7 @@ public class UrlBuilderTest {
@Test
public void endWithSlashTest() {
// 原URL中以/结尾,则这个规则需保留,issue#I1G44J@Gitee
- final String today = DateUtil.date().toString("yyyyMMdd");
+ final String today = DateUtil.now().toString("yyyyMMdd");
final String getWorkDayUrl = "https://tool.bitefu.net/jiari/?info=1&d=" + today;
final UrlBuilder builder = UrlBuilder.ofHttp(getWorkDayUrl, CharsetUtil.UTF_8);
Assert.assertEquals(getWorkDayUrl, builder.toString());
diff --git a/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternNextMatchTest.java b/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternNextMatchTest.java
index 37d27b927..59ff77cfd 100644
--- a/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternNextMatchTest.java
+++ b/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternNextMatchTest.java
@@ -14,7 +14,7 @@ public class CronPatternNextMatchTest {
public void nextMatchAllAfterTest() {
// 匹配所有,返回下一秒的时间
CronPattern pattern = new CronPattern("* * * * * * *");
- DateTime date = DateUtil.truncate(DateUtil.date(), DateField.SECOND);
+ DateTime date = DateUtil.truncate(DateUtil.now(), DateField.SECOND);
Calendar calendar = pattern.nextMatchAfter(date.toCalendar());
Assert.assertEquals(date.getTime(), DateUtil.date(calendar).getTime());
diff --git a/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternTest.java b/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternTest.java
index d4ab26a9f..2cb73ee6d 100755
--- a/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternTest.java
+++ b/hutool-cron/src/test/java/cn/hutool/cron/pattern/CronPatternTest.java
@@ -30,7 +30,7 @@ public class CronPatternTest {
pattern = CronPattern.of("* * * * *");
// 测试时,秒归零,则任意时间匹配
- assertMatch(pattern, DateUtil.beginOfMinute(DateUtil.date()).toString());
+ assertMatch(pattern, DateUtil.beginOfMinute(DateUtil.now()).toString());
}
@Test
diff --git a/hutool-json/src/main/java/cn/hutool/json/jwt/JWT.java b/hutool-json/src/main/java/cn/hutool/json/jwt/JWT.java
index 36194a5e2..60ef63612 100755
--- a/hutool-json/src/main/java/cn/hutool/json/jwt/JWT.java
+++ b/hutool-json/src/main/java/cn/hutool/json/jwt/JWT.java
@@ -388,7 +388,7 @@ public class JWT implements RegisteredPayload {
// 校验时间字段
try {
- JWTValidator.of(this).validateDate(DateUtil.date(), leeway);
+ JWTValidator.of(this).validateDate(DateUtil.now(), leeway);
} catch (final ValidateException e) {
return false;
}
diff --git a/hutool-json/src/main/java/cn/hutool/json/jwt/JWTValidator.java b/hutool-json/src/main/java/cn/hutool/json/jwt/JWTValidator.java
index 79e3a361a..314621a38 100755
--- a/hutool-json/src/main/java/cn/hutool/json/jwt/JWTValidator.java
+++ b/hutool-json/src/main/java/cn/hutool/json/jwt/JWTValidator.java
@@ -90,7 +90,7 @@ public class JWTValidator {
* @since 5.7.3
*/
public JWTValidator validateDate() throws ValidateException {
- return validateDate(DateUtil.beginOfSecond(DateUtil.date()));
+ return validateDate(DateUtil.beginOfSecond(DateUtil.now()));
}
/**
@@ -190,7 +190,7 @@ public class JWTValidator {
private static void validateDate(final JWTPayload payload, Date now, final long leeway) throws ValidateException {
if (null == now) {
// 默认当前时间
- now = DateUtil.date();
+ now = DateUtil.now();
// truncate millis
now.setTime(now.getTime() / 1000 * 1000);
}
diff --git a/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java b/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java
index 04d70e4bb..fd3f24ac1 100644
--- a/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java
+++ b/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java
@@ -50,11 +50,11 @@ public class JSONUtilTest {
public void toJsonStrTest() {
final UserA a1 = new UserA();
a1.setA("aaaa");
- a1.setDate(DateUtil.date());
+ a1.setDate(DateUtil.now());
a1.setName("AAAAName");
final UserA a2 = new UserA();
a2.setA("aaaa222");
- a2.setDate(DateUtil.date());
+ a2.setDate(DateUtil.now());
a2.setName("AAAA222Name");
final ArrayList list = ListUtil.of(a1, a2);
diff --git a/hutool-json/src/test/java/cn/hutool/json/jwt/JWTValidatorTest.java b/hutool-json/src/test/java/cn/hutool/json/jwt/JWTValidatorTest.java
index fd1ee25d8..263782325 100755
--- a/hutool-json/src/test/java/cn/hutool/json/jwt/JWTValidatorTest.java
+++ b/hutool-json/src/test/java/cn/hutool/json/jwt/JWTValidatorTest.java
@@ -13,13 +13,13 @@ public class JWTValidatorTest {
@Test(expected = ValidateException.class)
public void expiredAtTest(){
final String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0Nzc1OTJ9.isvT0Pqx0yjnZk53mUFSeYFJLDs-Ls9IsNAm86gIdZo";
- JWTValidator.of(token).validateDate(DateUtil.date());
+ JWTValidator.of(token).validateDate(DateUtil.now());
}
@Test(expected = ValidateException.class)
public void issueAtTest(){
final String token = JWT.of()
- .setIssuedAt(DateUtil.date())
+ .setIssuedAt(DateUtil.now())
.setKey("123456".getBytes())
.sign();
@@ -30,18 +30,18 @@ public class JWTValidatorTest {
@Test
public void issueAtPassTest(){
final String token = JWT.of()
- .setIssuedAt(DateUtil.date())
+ .setIssuedAt(DateUtil.now())
.setKey("123456".getBytes())
.sign();
// 签发时间早于被检查的时间
- JWTValidator.of(token).validateDate(DateUtil.date());
+ JWTValidator.of(token).validateDate(DateUtil.now());
}
@Test(expected = ValidateException.class)
public void notBeforeTest(){
final JWT jwt = JWT.of()
- .setNotBefore(DateUtil.date());
+ .setNotBefore(DateUtil.now());
JWTValidator.of(jwt).validateDate(DateUtil.yesterday());
}
@@ -49,14 +49,14 @@ public class JWTValidatorTest {
@Test
public void notBeforePassTest(){
final JWT jwt = JWT.of()
- .setNotBefore(DateUtil.date());
- JWTValidator.of(jwt).validateDate(DateUtil.date());
+ .setNotBefore(DateUtil.now());
+ JWTValidator.of(jwt).validateDate(DateUtil.now());
}
@Test
public void validateAlgorithmTest(){
final String token = JWT.of()
- .setNotBefore(DateUtil.date())
+ .setNotBefore(DateUtil.now())
.setKey("123456".getBytes())
.sign();
@@ -79,7 +79,7 @@ public class JWTValidatorTest {
.setPayload("username", "hutool")
.setExpiresAt(DateUtil.parse("2021-10-13 09:59:00"));
- JWTValidator.of(jwt).validateDate(DateUtil.date());
+ JWTValidator.of(jwt).validateDate(DateUtil.now());
}
@Test
diff --git a/hutool-poi/src/test/java/cn/hutool/poi/excel/BigExcelWriteTest.java b/hutool-poi/src/test/java/cn/hutool/poi/excel/BigExcelWriteTest.java
index ddd4f46f0..03e4c59fa 100644
--- a/hutool-poi/src/test/java/cn/hutool/poi/excel/BigExcelWriteTest.java
+++ b/hutool-poi/src/test/java/cn/hutool/poi/excel/BigExcelWriteTest.java
@@ -39,11 +39,11 @@ public class BigExcelWriteTest {
@Test
@Ignore
public void writeTest() {
- final List> row1 = ListUtil.of("aaaaa", "bb", "cc", "dd", DateUtil.date(), 3.22676575765);
- final List> row2 = ListUtil.of("aa1", "bb1", "cc1", "dd1", DateUtil.date(), 250.7676);
- final List> row3 = ListUtil.of("aa2", "bb2", "cc2", "dd2", DateUtil.date(), 0.111);
- final List> row4 = ListUtil.of("aa3", "bb3", "cc3", "dd3", DateUtil.date(), 35);
- final List> row5 = ListUtil.of("aa4", "bb4", "cc4", "dd4", DateUtil.date(), 28.00);
+ final List> row1 = ListUtil.of("aaaaa", "bb", "cc", "dd", DateUtil.now(), 3.22676575765);
+ final List> row2 = ListUtil.of("aa1", "bb1", "cc1", "dd1", DateUtil.now(), 250.7676);
+ final List> row3 = ListUtil.of("aa2", "bb2", "cc2", "dd2", DateUtil.now(), 0.111);
+ final List> row4 = ListUtil.of("aa3", "bb3", "cc3", "dd3", DateUtil.now(), 35);
+ final List> row5 = ListUtil.of("aa4", "bb4", "cc4", "dd4", DateUtil.now(), 28.00);
final List> rows = ListUtil.of(row1, row2, row3, row4, row5);
for(int i=0; i < 400000; i++) {
@@ -70,11 +70,11 @@ public class BigExcelWriteTest {
@Test
@Ignore
public void mergeTest() {
- final List> row1 = ListUtil.of("aa", "bb", "cc", "dd", DateUtil.date(), 3.22676575765);
- final List> row2 = ListUtil.of("aa1", "bb1", "cc1", "dd1", DateUtil.date(), 250.7676);
- final List> row3 = ListUtil.of("aa2", "bb2", "cc2", "dd2", DateUtil.date(), 0.111);
- final List> row4 = ListUtil.of("aa3", "bb3", "cc3", "dd3", DateUtil.date(), 35);
- final List> row5 = ListUtil.of("aa4", "bb4", "cc4", "dd4", DateUtil.date(), 28.00);
+ final List> row1 = ListUtil.of("aa", "bb", "cc", "dd", DateUtil.now(), 3.22676575765);
+ final List> row2 = ListUtil.of("aa1", "bb1", "cc1", "dd1", DateUtil.now(), 250.7676);
+ final List> row3 = ListUtil.of("aa2", "bb2", "cc2", "dd2", DateUtil.now(), 0.111);
+ final List> row4 = ListUtil.of("aa3", "bb3", "cc3", "dd3", DateUtil.now(), 35);
+ final List> row5 = ListUtil.of("aa4", "bb4", "cc4", "dd4", DateUtil.now(), 28.00);
final List> rows = ListUtil.of(row1, row2, row3, row4, row5);
@@ -105,14 +105,14 @@ public class BigExcelWriteTest {
row1.put("年龄", 23);
row1.put("成绩", 88.32);
row1.put("是否合格", true);
- row1.put("考试日期", DateUtil.date());
+ row1.put("考试日期", DateUtil.now());
final Map row2 = new LinkedHashMap<>();
row2.put("姓名", "李四");
row2.put("年龄", 33);
row2.put("成绩", 59.50);
row2.put("是否合格", false);
- row2.put("考试日期", DateUtil.date());
+ row2.put("考试日期", DateUtil.now());
final ArrayList