diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/Week.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/Week.java index ac0c45ab9..72a23a0d1 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/Week.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/Week.java @@ -13,6 +13,7 @@ package org.dromara.hutool.core.date; import org.dromara.hutool.core.lang.Assert; +import org.dromara.hutool.core.text.StrUtil; import java.time.DayOfWeek; import java.util.Calendar; @@ -180,6 +181,28 @@ public enum Week { */ public static Week of(final String name) throws IllegalArgumentException { if (null != name && name.length() > 1) { + // issue#3637 + if (StrUtil.startWithAny(name, "星期", "周")) { + final char chineseNumber = name.charAt(name.length() - 1); + switch (chineseNumber) { + case '一': + return MONDAY; + case '二': + return TUESDAY; + case '三': + return WEDNESDAY; + case '四': + return THURSDAY; + case '五': + return FRIDAY; + case '六': + return SATURDAY; + case '日': + return SUNDAY; + } + throw new IllegalArgumentException("Invalid week name: " + name); + } + switch (Character.toLowerCase(name.charAt(0))) { case 'm': return MONDAY; // monday diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/date/WeekTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/date/WeekTest.java index 08af792a5..895bd1cb6 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/date/WeekTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/date/WeekTest.java @@ -12,79 +12,105 @@ package org.dromara.hutool.core.date; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.time.DayOfWeek; import java.util.Calendar; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + public class WeekTest { @Test public void ofTest(){ //测试别名及大小写 - Assertions.assertEquals(Week.SUNDAY, Week.of("sun")); - Assertions.assertEquals(Week.SUNDAY, Week.of("SUN")); - Assertions.assertEquals(Week.SUNDAY, Week.of("Sun")); + assertEquals(Week.SUNDAY, Week.of("sun")); + assertEquals(Week.SUNDAY, Week.of("SUN")); + assertEquals(Week.SUNDAY, Week.of("Sun")); //测试全名及大小写 - Assertions.assertEquals(Week.SUNDAY, Week.of("sunday")); - Assertions.assertEquals(Week.SUNDAY, Week.of("Sunday")); - Assertions.assertEquals(Week.SUNDAY, Week.of("SUNDAY")); + assertEquals(Week.SUNDAY, Week.of("sunday")); + assertEquals(Week.SUNDAY, Week.of("Sunday")); + assertEquals(Week.SUNDAY, Week.of("SUNDAY")); - Assertions.assertEquals(Week.MONDAY, Week.of("Mon")); - Assertions.assertEquals(Week.MONDAY, Week.of("Monday")); + assertEquals(Week.MONDAY, Week.of("Mon")); + assertEquals(Week.MONDAY, Week.of("Monday")); - Assertions.assertEquals(Week.TUESDAY, Week.of("tue")); - Assertions.assertEquals(Week.TUESDAY, Week.of("tuesday")); + assertEquals(Week.TUESDAY, Week.of("tue")); + assertEquals(Week.TUESDAY, Week.of("tuesday")); - Assertions.assertEquals(Week.WEDNESDAY, Week.of("wed")); - Assertions.assertEquals(Week.WEDNESDAY, Week.of("WEDNESDAY")); + assertEquals(Week.WEDNESDAY, Week.of("wed")); + assertEquals(Week.WEDNESDAY, Week.of("WEDNESDAY")); - Assertions.assertEquals(Week.THURSDAY, Week.of("thu")); - Assertions.assertEquals(Week.THURSDAY, Week.of("THURSDAY")); + assertEquals(Week.THURSDAY, Week.of("thu")); + assertEquals(Week.THURSDAY, Week.of("THURSDAY")); - Assertions.assertEquals(Week.FRIDAY, Week.of("fri")); - Assertions.assertEquals(Week.FRIDAY, Week.of("FRIDAY")); + assertEquals(Week.FRIDAY, Week.of("fri")); + assertEquals(Week.FRIDAY, Week.of("FRIDAY")); - Assertions.assertEquals(Week.SATURDAY, Week.of("sat")); - Assertions.assertEquals(Week.SATURDAY, Week.of("SATURDAY")); + assertEquals(Week.SATURDAY, Week.of("sat")); + assertEquals(Week.SATURDAY, Week.of("SATURDAY")); } @Test public void ofTest2(){ - Assertions.assertEquals(Week.SUNDAY, Week.of(DayOfWeek.SUNDAY)); - Assertions.assertEquals(Week.MONDAY, Week.of(DayOfWeek.MONDAY)); - Assertions.assertEquals(Week.TUESDAY, Week.of(DayOfWeek.TUESDAY)); - Assertions.assertEquals(Week.WEDNESDAY, Week.of(DayOfWeek.WEDNESDAY)); - Assertions.assertEquals(Week.THURSDAY, Week.of(DayOfWeek.THURSDAY)); - Assertions.assertEquals(Week.FRIDAY, Week.of(DayOfWeek.FRIDAY)); - Assertions.assertEquals(Week.SATURDAY, Week.of(DayOfWeek.SATURDAY)); - Assertions.assertEquals(Week.SATURDAY, Week.of(Calendar.SATURDAY)); - Assertions.assertNull(Week.of(10)); - Assertions.assertNull(Week.of(-1)); + assertEquals(Week.SUNDAY, Week.of(DayOfWeek.SUNDAY)); + assertEquals(Week.MONDAY, Week.of(DayOfWeek.MONDAY)); + assertEquals(Week.TUESDAY, Week.of(DayOfWeek.TUESDAY)); + assertEquals(Week.WEDNESDAY, Week.of(DayOfWeek.WEDNESDAY)); + assertEquals(Week.THURSDAY, Week.of(DayOfWeek.THURSDAY)); + assertEquals(Week.FRIDAY, Week.of(DayOfWeek.FRIDAY)); + assertEquals(Week.SATURDAY, Week.of(DayOfWeek.SATURDAY)); + assertEquals(Week.SATURDAY, Week.of(Calendar.SATURDAY)); + assertNull(Week.of(10)); + assertNull(Week.of(-1)); + } + + @Test + public void ofChineseTest() { + assertEquals(Week.SUNDAY, Week.of("星期日")); + assertEquals(Week.SUNDAY, Week.of("周日")); + + assertEquals(Week.MONDAY, Week.of("星期一")); + assertEquals(Week.MONDAY, Week.of("周一")); + + assertEquals(Week.TUESDAY, Week.of("星期二")); + assertEquals(Week.TUESDAY, Week.of("周二")); + + assertEquals(Week.WEDNESDAY, Week.of("星期三")); + assertEquals(Week.WEDNESDAY, Week.of("周三")); + + assertEquals(Week.THURSDAY, Week.of("星期四")); + assertEquals(Week.THURSDAY, Week.of("周四")); + + assertEquals(Week.FRIDAY, Week.of("星期五")); + assertEquals(Week.FRIDAY, Week.of("周五")); + + assertEquals(Week.SATURDAY, Week.of("星期六")); + assertEquals(Week.SATURDAY, Week.of("周六")); } @Test public void toJdkDayOfWeekTest(){ - Assertions.assertEquals(DayOfWeek.MONDAY, Week.MONDAY.toJdkDayOfWeek()); - Assertions.assertEquals(DayOfWeek.TUESDAY, Week.TUESDAY.toJdkDayOfWeek()); - Assertions.assertEquals(DayOfWeek.WEDNESDAY, Week.WEDNESDAY.toJdkDayOfWeek()); - Assertions.assertEquals(DayOfWeek.THURSDAY, Week.THURSDAY.toJdkDayOfWeek()); - Assertions.assertEquals(DayOfWeek.FRIDAY, Week.FRIDAY.toJdkDayOfWeek()); - Assertions.assertEquals(DayOfWeek.SATURDAY, Week.SATURDAY.toJdkDayOfWeek()); - Assertions.assertEquals(DayOfWeek.SUNDAY, Week.SUNDAY.toJdkDayOfWeek()); + assertEquals(DayOfWeek.MONDAY, Week.MONDAY.toJdkDayOfWeek()); + assertEquals(DayOfWeek.TUESDAY, Week.TUESDAY.toJdkDayOfWeek()); + assertEquals(DayOfWeek.WEDNESDAY, Week.WEDNESDAY.toJdkDayOfWeek()); + assertEquals(DayOfWeek.THURSDAY, Week.THURSDAY.toJdkDayOfWeek()); + assertEquals(DayOfWeek.FRIDAY, Week.FRIDAY.toJdkDayOfWeek()); + assertEquals(DayOfWeek.SATURDAY, Week.SATURDAY.toJdkDayOfWeek()); + assertEquals(DayOfWeek.SUNDAY, Week.SUNDAY.toJdkDayOfWeek()); } @Test public void toChineseTest(){ - Assertions.assertEquals("周一",Week.MONDAY.toChinese("周")); - Assertions.assertEquals("星期一",Week.MONDAY.toChinese("星期")); - Assertions.assertEquals("星期二",Week.TUESDAY.toChinese("星期")); - Assertions.assertEquals("星期三",Week.WEDNESDAY.toChinese("星期")); - Assertions.assertEquals("星期四",Week.THURSDAY.toChinese("星期")); - Assertions.assertEquals("星期五",Week.FRIDAY.toChinese("星期")); - Assertions.assertEquals("星期六",Week.SATURDAY.toChinese("星期")); - Assertions.assertEquals("星期日",Week.SUNDAY.toChinese("星期")); - Assertions.assertEquals("星期一",Week.MONDAY.toChinese()); + assertEquals("周一",Week.MONDAY.toChinese("周")); + assertEquals("星期一",Week.MONDAY.toChinese("星期")); + assertEquals("星期二",Week.TUESDAY.toChinese("星期")); + assertEquals("星期三",Week.WEDNESDAY.toChinese("星期")); + assertEquals("星期四",Week.THURSDAY.toChinese("星期")); + assertEquals("星期五",Week.FRIDAY.toChinese("星期")); + assertEquals("星期六",Week.SATURDAY.toChinese("星期")); + assertEquals("星期日",Week.SUNDAY.toChinese("星期")); + assertEquals("星期一",Week.MONDAY.toChinese()); } }