fix chinese date

This commit is contained in:
Looly 2020-01-26 08:56:00 +08:00
parent cf10fc9acc
commit 3c77343369
3 changed files with 37 additions and 23 deletions

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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());
}
}