From 4b02bc72877150eab22ff3ab056785676714a0f3 Mon Sep 17 00:00:00 2001 From: tjh Date: Tue, 18 Jan 2022 15:39:44 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96=E4=B8=BA=E4=B8=AD=E6=96=87=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E6=97=B6=EF=BC=8C0=E8=A2=AB=E5=A4=84=E7=90=86=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/convert/NumberChineseFormatter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java b/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java index afbb9d472..cacd13000 100644 --- a/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java @@ -164,6 +164,11 @@ public class NumberChineseFormatter { */ public static String formatThousand(int amount, boolean isUseTraditional){ Assert.checkBetween(amount, -999, 999, "Number support only: (-999 ~ 999)!"); + + // thousandToChinese方法对0不处理,此处直接返回"零" + if (amount == 0) { + return String.valueOf(DIGITS[0]); + } final String chinese = thousandToChinese(amount, isUseTraditional); if(amount < 20 && amount > 10){ // "十一"而非"一十一" From 8c20364c2c0f8a86c2607d9c4c56947b5c67b6dd Mon Sep 17 00:00:00 2001 From: tjh Date: Tue, 18 Jan 2022 16:12:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96=E4=B8=BA=E4=B8=AD=E6=96=87=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E6=97=B6=EF=BC=8C0=E8=A2=AB=E5=A4=84=E7=90=86=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/hutool/core/date/CalendarUtil.java | 8 +++++++- .../src/test/java/cn/hutool/core/date/DateUtilTest.java | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java index 752a052c8..43ef2d3b8 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java @@ -555,6 +555,12 @@ public class CalendarUtil { result.append(NumberChineseFormatter.formatThousand(day, false)); result.append('日'); + // 时分秒中零不需要替换 + String temp = result.toString().replace('零', '〇'); + result.delete(0, result.length()); + result.append(temp); + + if (withTime) { // 时 int hour = calendar.get(Calendar.HOUR_OF_DAY); @@ -570,7 +576,7 @@ public class CalendarUtil { result.append('秒'); } - return result.toString().replace('零', '〇'); + return result.toString(); } /** 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 6d3a2529e..24e7321a8 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java @@ -289,6 +289,9 @@ public class DateUtilTest { public void formatChineseDateTimeTest() { String formatChineseDateTime = DateUtil.formatChineseDate(DateUtil.parse("2018-02-24 12:13:14"), true, true); Assert.assertEquals("二〇一八年二月二十四日十二时十三分十四秒", formatChineseDateTime); + + formatChineseDateTime = DateUtil.formatChineseDate(DateUtil.parse("2022-01-18 12:00:00"), true, true); + Assert.assertEquals("二〇二二年一月十八日十二时零分零秒", formatChineseDateTime); } @Test