ソースを参照

fix chinese date

Looly 5 年 前
コミット
3c77343369

+ 10 - 1
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);
+		}
 	}
 
 

+ 22 - 22
hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormaterTest.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);
 	}
 	

+ 5 - 0
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());
 	}
 }