From 6e9879c82126aefae42fb02af9e25be1347b365a Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 1 Nov 2019 11:41:09 +0800 Subject: [PATCH] add method for time --- CHANGELOG.md | 3 ++ .../cn/hutool/core/collection/CollUtil.java | 6 ++- .../impl/TemporalAccessorConverter.java | 54 ++++++++++++------- .../java/cn/hutool/core/date/DateTime.java | 53 +++++++++++++++--- .../java/cn/hutool/core/date/DateUtil.java | 49 ++++++++++++++++- .../cn/hutool/core/thread/ThreadUtil.java | 7 +-- .../cn/hutool/core/convert/ConvertTest.java | 27 ++++++++++ 7 files changed, 163 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6dd954538..6bdf987df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ ### 新特性 * 【core】 增加MapUtil.removeAny(issue#612@Github) +* 【core】 Convert.toList支持[1,2]字符串(issue#I149XN@Gitee) +* 【core】 修正DateUtil.thisWeekOfMonth注释错误(issue#614@Github) +* 【core】 DateUtil增加toLocalDate等方法,DateTime更好的支持时区 ### Bug修复 * 【db】 修复MetaUtil.getTableMeta()方法未释放ResultSet的bug(issue#I148GH@Gitee) diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java index bb837e750..8b6377019 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -1744,6 +1744,7 @@ public class CollUtil { /** * 将指定对象全部加入到集合中
* 提供的对象如果为集合类型,会自动转换为目标元素类型
+ * 如果为String,支持类似于[1,2,3,4] 或者 1,2,3,4 这种格式 * * @param 元素类型 * @param collection 被加入的集合 @@ -1772,7 +1773,8 @@ public class CollUtil { iter = new ArrayIter<>(value); } else if (value instanceof CharSequence) { // String按照逗号分隔的列表对待 - iter = StrUtil.splitTrim((CharSequence) value, CharUtil.COMMA).iterator(); + final String ArrayStr = StrUtil.unWrap((CharSequence) value, '[', ']'); + iter = StrUtil.splitTrim(ArrayStr, CharUtil.COMMA).iterator(); } else { // 其它类型按照单一元素处理 iter = CollUtil.newArrayList(value).iterator(); @@ -2415,7 +2417,7 @@ public class CollUtil { /** * 设置或增加元素。当index小于List的长度时,替换指定位置的值,否则在尾部追加 * - * @param 元素类型 + * @param 元素类型 * @param list List列表 * @param index 位置 * @param element 新元素 diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java b/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java index 2ba59ac49..3375ff62d 100644 --- a/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/impl/TemporalAccessorConverter.java @@ -1,7 +1,9 @@ package cn.hutool.core.convert.impl; import cn.hutool.core.convert.AbstractConverter; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import java.time.Instant; import java.time.LocalDate; @@ -87,9 +89,11 @@ public class TemporalAccessorConverter extends AbstractConverter * 格式:[20131]表示2013年第一季度 diff --git a/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java b/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java index 8bf64cc9c..3a987578c 100644 --- a/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/thread/ThreadUtil.java @@ -102,12 +102,7 @@ public class ThreadUtil { * @return 执行的方法体 */ public static Runnable excAsync(final Runnable runnable, boolean isDaemon) { - Thread thread = new Thread() { - @Override - public void run() { - runnable.run(); - } - }; + Thread thread = new Thread(runnable); thread.setDaemon(isDaemon); thread.start(); diff --git a/hutool-core/src/test/java/cn/hutool/core/convert/ConvertTest.java b/hutool-core/src/test/java/cn/hutool/core/convert/ConvertTest.java index a68db5702..23f8edb8f 100644 --- a/hutool-core/src/test/java/cn/hutool/core/convert/ConvertTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/convert/ConvertTest.java @@ -4,6 +4,8 @@ import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * 类型转换工具单元测试 @@ -179,4 +181,29 @@ public class ConvertTest { Assert.assertEquals(short2, short1); } + + @Test + public void toListTest(){ + List list = Arrays.asList("1","2"); + String str = Convert.toStr(list); + List list2 = Convert.toList(String.class, str); + Assert.assertEquals("1", list2.get(0)); + Assert.assertEquals("2", list2.get(1)); + + List list3 = Convert.toList(Integer.class, str); + Assert.assertEquals(1, list3.get(0).intValue()); + Assert.assertEquals(2, list3.get(1).intValue()); + } + + @Test + public void toListTest2(){ + String str = "1,2"; + List list2 = Convert.toList(String.class, str); + Assert.assertEquals("1", list2.get(0)); + Assert.assertEquals("2", list2.get(1)); + + List list3 = Convert.toList(Integer.class, str); + Assert.assertEquals(1, list3.get(0).intValue()); + Assert.assertEquals(2, list3.get(1).intValue()); + } }