JAVA日期转换中文格式
- 例:2000-1-11 --> 二〇〇〇年一月十一日
-
例:2000-1-11 --> 二〇〇〇年一月十一日
创建枚举类
public enum ChineseNumberEnum implements IEnum {
/**
* 0
*/
ZERO("0", "〇"),
/**
* 1
*/
ONE("1", "一"),
/**
* 2
*/
TWO("2", "二"),
/**
* 3
*/
THREE("3", "三"),
/**
* 4
*/
FOUR("4", "四"),
/**
* 5
*/
FIVE("5", "五"),
/**
* 6
*/
SIX("6", "六"),
/**
* 7
*/
SEVEN("7", "七"),
/**
* 8
*/
EIGHT("8", "八"),
/**
* 9
*/
NINE("9", "九"),
/**
* 10
*/
TEN("10", "十"),
/**
*
*/
ELEVEN("11", "十一"),
/**
*
*/
TWELVE("12", "十二"),
/**
*
*/
THIRTEEN("13", "十三"),
/**
*
*/
FOURTEEN("14", "十四"),
/**
*
*/
FIFTEEN("15", "十五"),
/**
*
*/
SIXTEEN("16", "十六"),
/**
*
*/
SEVENTEEN("17", "十七"),
/**
*
*/
EIGHTEEN("18", "十八"),
/**
*
*/
NINETEEN("19", "十九"),
/**
*
*/
TWENTY("20", "二十"),
/**
*
*/
TWENTY_ONE("21", "二十一"),
/**
*
*/
TWENTY_TWO("22", "二十二"),
/**
*
*/
TWENTY_THREE("23", "二十三"),
/**
*
*/
TWENTY_FOUR("24", "二十四"),
/**
*
*/
TWENTY_FIVE("25", "二十五"),
/**
*
*/
TWENTY_SIX("26", "二十六"),
/**
*
*/
TWENTY_SEVEN("27", "二十七"),
/**
*
*/
TWENTY_EIGHT("28", "二十八"),
/**
*
*/
TWENTY_NINE("29", "二十九"),
/**
*
*/
THIRTY("30", "三十"),
/**
*
*/
THIRTY_ONE("31", "三十一"),
;
private final String numberCode;
private final String chineseCode;
ChineseNumberEnum(String numberCode, String chineseCode) {
this.numberCode = numberCode;
this.chineseCode = chineseCode;
}
@Override
public String getValue() {
return numberCode;
}
public String getNumberCode() {
return numberCode;
}
public String getChineseCode() {
return chineseCode;
}
static final Map SEND_METHOD_MAP = new HashMap<>();
static {
for (ChineseNumberEnum code : ChineseNumberEnum.values()) {
SEND_METHOD_MAP.put(code.getNumberCode(), code.getChineseCode());
}
}
public static String getValue(String key) {
return SEND_METHOD_MAP.get(key);
}
创建工具类
public class ConvertChineseUtils {
private EnumConvertChineseUtils() {
}
/**
* 将yyyy-M-d 格式日期转换成中文格式
* 例:2000-1-1 --> 二〇〇〇年一月一日
*/
public static String convertNumberToChineseDate(String date) {
if (StringUtils.isBlank(date)) {
return date;
}
try {
String[] dateArray = date.split("-");
StringBuilder chineseDate = new StringBuilder();
for (int i = 0; i < dateArray.length; i++) {
chineseDate.append(formatDigit(dateArray[i]));
if (i == 0) {
chineseDate.append("年");
}
if (i == 1) {
chineseDate.append("月");
}
if (i == 2) {
chineseDate.append("日");
}
}
return chineseDate.toString();
} catch (Exception e) {
return null;
}
}
/**
* 截取后的年月日转换为中文
* 例1:2000 --> 二〇〇〇
* 例1:10 --> 十
*/
public static String formatDigit(String sign) {
if (StringUtils.isBlank(sign)) {
return null;
}
char[] signChar = sign.toCharArray();
StringBuilder chinese = new StringBuilder();
if (signChar.length > 3 || signChar.length < 2) {
for (char c : signChar) {
chinese.append(ChineseNumberEnum.getValue(String.valueOf(c)));
}
} else {
chinese.append(ChineseNumberEnum.getValue(sign));
}
return chinese.toString();
}
}