diff --git a/CHANGELOG.md b/CHANGELOG.md
index 470e96df7..5bb8d6deb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,7 @@
# 🚀Changelog
-------------------------------------------------------------------------------------------------------------
-# 5.7.21 (2022-01-26)
+# 5.7.21 (2022-01-27)
### 🐣新特性
* 【extra 】 增加jetbrick模板支持
@@ -12,6 +12,8 @@
* 【core 】 新增LocalDateTimeUtil.weekOfYear(issue#I4RWXC@Gitee)
* 【core 】 Month增加toJdkMonth、getValueBaseOne
* 【core 】 CsvWriter修改规则,去除末尾多余换行符(issue#I4RSQY@Gitee)
+* 【core 】 DateUtil增加rangeFunc和rangeConsume(issue#I4RSQY@Gitee)
+* 【core 】 DateTime增加setUseJdkToStringStyle方法
### 🐞Bug修复
* 【core 】 修复ChineseDate农历获取正月出现数组越界BUG(issue#2112@Github)
diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateTime.java b/hutool-core/src/main/java/cn/hutool/core/date/DateTime.java
index 76547adfc..2956eade4 100644
--- a/hutool-core/src/main/java/cn/hutool/core/date/DateTime.java
+++ b/hutool-core/src/main/java/cn/hutool/core/date/DateTime.java
@@ -24,13 +24,30 @@ import java.util.Locale;
import java.util.TimeZone;
/**
- * 包装java.util.Date
+ * 包装{@link Date}
+ * 此类继承了{@link Date},并提供扩展方法,如时区等。
+ * 此类重写了父类的{@code toString()}方法,返回值为"yyyy-MM-dd HH:mm:ss"格式
*
* @author xiaoleilu
*/
public class DateTime extends Date {
private static final long serialVersionUID = -5395712593979185936L;
+ private static boolean useJdkToStringStyle = false;
+
+ /**
+ * 设置全局的,是否使用{@link Date}默认的toString()格式
+ * 如果为{@code true},则调用toString()时返回"EEE MMM dd HH:mm:ss zzz yyyy"格式,
+ * 如果为{@code false},则返回"yyyy-MM-dd HH:mm:ss",
+ * 默认为{@code false}
+ *
+ * @param customUseJdkToStringStyle 是否使用{@link Date}默认的toString()格式
+ * @since 5.7.21
+ */
+ public static void setUseJdkToStringStyle(boolean customUseJdkToStringStyle){
+ useJdkToStringStyle = customUseJdkToStringStyle;
+ }
+
/**
* 是否可变对象
*/
@@ -932,13 +949,18 @@ public class DateTime extends Date {
// -------------------------------------------------------------------- toString start
/**
- * 转为"yyyy-MM-dd HH:mm:ss" 格式字符串
- * 如果时区被设置,会转换为其时区对应的时间,否则转换为当前地点对应的时区
+ * 转为字符串,如果时区被设置,会转换为其时区对应的时间,否则转换为当前地点对应的时区
+ * 可以调用{@link DateTime#setUseJdkToStringStyle(boolean)} 方法自定义默认的风格
+ * 如果{@link #useJdkToStringStyle}为{@code true},返回"EEE MMM dd HH:mm:ss zzz yyyy"格式,
+ * 如果为{@code false},则返回"yyyy-MM-dd HH:mm:ss"
*
- * @return "yyyy-MM-dd HH:mm:ss" 格式字符串
+ * @return 格式字符串
*/
@Override
public String toString() {
+ if(useJdkToStringStyle){
+ return super.toString();
+ }
return toString(this.timeZone);
}
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 268083716..164855a09 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
@@ -20,7 +20,15 @@ import java.time.LocalDateTime;
import java.time.Year;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -1888,23 +1896,19 @@ public class DateUtil extends CalendarUtil {
* @param end 结束日期时间
* @param unit 步进单位
* @param func 每次遍历要执行的 function
- * @param
- * @return
+ * @param Date经过函数处理结果类型
+ * @return 结果列表
+ * @since 5.7.21
*/
public static List rangeFunc(Date start, Date end, final DateField unit, Function func) {
if (start == null || end == null || start.after(end)) {
return Collections.emptyList();
- } else {
- ArrayList list = new ArrayList<>();
- DateRange dateRange = range(start, end, unit);
- while (dateRange.hasNext()) {
- DateTime next = dateRange.next();
- Date date = next.toJdkDate();
- T result = func.apply(date);
- list.add(result);
- }
- return list;
}
+ ArrayList list = new ArrayList<>();
+ for(DateTime date : range(start, end, unit)){
+ list.add(func.apply(date));
+ }
+ return list;
}
/**
@@ -1914,19 +1918,13 @@ public class DateUtil extends CalendarUtil {
* @param end 结束日期时间
* @param unit 步进单位
* @param consumer 每次遍历要执行的 consumer
- * @return
+ * @since 5.7.21
*/
public static void rangeConsume(Date start, Date end, final DateField unit, Consumer consumer) {
if (start == null || end == null || start.after(end)) {
return;
- } else {
- DateRange dateRange = range(start, end, unit);
- while (dateRange.hasNext()) {
- DateTime next = dateRange.next();
- Date date = next.toJdkDate();
- consumer.accept(date);
- }
}
+ range(start, end, unit).forEach(consumer);
}
/**
@@ -1937,7 +1935,7 @@ public class DateUtil extends CalendarUtil {
* @param unit 步进单位
* @return {@link DateRange}
*/
- public static List rangeToList(Date start, Date end, final DateField unit) {
+ public static List rangeToList(Date start, Date end, DateField unit) {
return CollUtil.newArrayList((Iterable) range(start, end, unit));
}