From 3c77343369384f7f5c639cce053f26113295706b Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 26 Jan 2020 08:56:00 +0800 Subject: [PATCH] fix chinese date --- .../java/cn/hutool/core/date/ChineseDate.java | 11 ++++- ...t.java => NumberChineseFormatterTest.java} | 44 +++++++++---------- .../cn/hutool/core/date/ChineseDateTest.java | 5 +++ 3 files changed, 37 insertions(+), 23 deletions(-) rename hutool-core/src/test/java/cn/hutool/core/convert/{NumberChineseFormaterTest.java => NumberChineseFormatterTest.java} (58%) diff --git a/hutool-core/src/main/java/cn/hutool/core/date/ChineseDate.java b/hutool-core/src/main/java/cn/hutool/core/date/ChineseDate.java index 44f73aa37..3af7343d5 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/ChineseDate.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/ChineseDate.java @@ -170,7 +170,16 @@ public class ChineseDate { if (day > 30) { return ""; } - return day == 10 ? "初十" : chineseTen[day / 10] + NumberChineseFormatter.format(n + 1, false); + switch (day) { + case 10: + return "初十"; + case 20: + return "二十"; + case 30: + return "三十"; + default: + return chineseTen[day / 10] + NumberChineseFormatter.format(n + 1, false); + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormaterTest.java b/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java similarity index 58% rename from hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormaterTest.java rename to hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java index 70b101525..d30d54069 100644 --- a/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormaterTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java @@ -3,54 +3,54 @@ package cn.hutool.core.convert; import org.junit.Assert; import org.junit.Test; -import cn.hutool.core.convert.Convert; -import cn.hutool.core.convert.NumberChineseFormater; - -public class NumberChineseFormaterTest { +public class NumberChineseFormatterTest { @Test public void formatTest() { - String f1 = NumberChineseFormater.format(10889.72356, false); + String f1 = NumberChineseFormatter.format(10889.72356, false); Assert.assertEquals("一万零八百八十九点七二", f1); - f1 = NumberChineseFormater.format(12653, false); + f1 = NumberChineseFormatter.format(12653, false); Assert.assertEquals("一万二千六百五十三", f1); - f1 = NumberChineseFormater.format(215.6387, false); + f1 = NumberChineseFormatter.format(215.6387, false); Assert.assertEquals("二百一十五点六四", f1); - f1 = NumberChineseFormater.format(1024, false); + f1 = NumberChineseFormatter.format(1024, false); Assert.assertEquals("一千零二十四", f1); - f1 = NumberChineseFormater.format(100350089, false); + f1 = NumberChineseFormatter.format(100350089, false); Assert.assertEquals("一亿三十五万零八十九", f1); - f1 = NumberChineseFormater.format(1200, false); + f1 = NumberChineseFormatter.format(1200, false); Assert.assertEquals("一千二百", f1); - f1 = NumberChineseFormater.format(12, false); + f1 = NumberChineseFormatter.format(12, false); Assert.assertEquals("一十二", f1); - f1 = NumberChineseFormater.format(0.05, false); + f1 = NumberChineseFormatter.format(0.05, false); Assert.assertEquals("零点零五", f1); } @Test public void formatTest2() { - String f1 = NumberChineseFormater.format(-0.3, false, false); + String f1 = NumberChineseFormatter.format(-0.3, false, false); Assert.assertEquals("负零点三", f1); + + f1 = NumberChineseFormatter.format(10, false, false); + Assert.assertEquals("一十", f1); } @Test - public void formatTranditionalTest() { - String f1 = NumberChineseFormater.format(10889.72356, true); + public void formatTraditionalTest() { + String f1 = NumberChineseFormatter.format(10889.72356, true); Assert.assertEquals("壹万零捌佰捌拾玖点柒贰", f1); - f1 = NumberChineseFormater.format(12653, true); + f1 = NumberChineseFormatter.format(12653, true); Assert.assertEquals("壹万贰仟陆佰伍拾叁", f1); - f1 = NumberChineseFormater.format(215.6387, true); + f1 = NumberChineseFormatter.format(215.6387, true); Assert.assertEquals("贰佰壹拾伍点陆肆", f1); - f1 = NumberChineseFormater.format(1024, true); + f1 = NumberChineseFormatter.format(1024, true); Assert.assertEquals("壹仟零贰拾肆", f1); - f1 = NumberChineseFormater.format(100350089, true); + f1 = NumberChineseFormatter.format(100350089, true); Assert.assertEquals("壹亿叁拾伍万零捌拾玖", f1); - f1 = NumberChineseFormater.format(1200, true); + f1 = NumberChineseFormatter.format(1200, true); Assert.assertEquals("壹仟贰佰", f1); - f1 = NumberChineseFormater.format(12, true); + f1 = NumberChineseFormatter.format(12, true); Assert.assertEquals("壹拾贰", f1); - f1 = NumberChineseFormater.format(0.05, true); + f1 = NumberChineseFormatter.format(0.05, true); Assert.assertEquals("零点零伍", f1); } diff --git a/hutool-core/src/test/java/cn/hutool/core/date/ChineseDateTest.java b/hutool-core/src/test/java/cn/hutool/core/date/ChineseDateTest.java index de4882ee0..e7a9dcafb 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/ChineseDateTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/ChineseDateTest.java @@ -16,5 +16,10 @@ public class ChineseDateTest { Assert.assertEquals("鼠", date.getChineseZodiac()); Assert.assertEquals("春节", date.getFestivals()); Assert.assertEquals("庚子鼠年 正月初一", date.toString()); + + date = new ChineseDate(DateUtil.parseDate("2020-01-14")); + Assert.assertEquals("己亥猪年 腊月二十", date.toString()); + date = new ChineseDate(DateUtil.parseDate("2020-01-24")); + Assert.assertEquals("己亥猪年 腊月三十", date.toString()); } }