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){ // "十一"而非"一十一" 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