java实现日期转成中文大写形式
package com.zlt.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DateToUpperChinese {
private static final String[] NUMBERS = {"零", "壹", "贰", "叁", "肆", "伍",
"陆", "柒", "捌", "玖"};
public static synchronized String toChinese(String str) {
StringBuffer sb = new StringBuffer();
sb.append(getSplitDateStr(str, 0)).append(" ").append(
getSplitDateStr(str, 1)).append(" ").append(
getSplitDateStr(str, 2));
return sb.toString();
}
public static String getSplitDateStr(String str, int unit) {
String[] DateStr = str.split("-");
if (unit > DateStr.length)
unit = 0;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < DateStr[unit].length(); i++) {
if ((unit == 1 || unit == 2) && Integer.valueOf(DateStr[unit]) > 9) {
sb.append(convertNum(DateStr[unit].substring(0, 1)))
.append("拾").append(
convertNum(DateStr[unit].substring(1, 2)));
break;
} else {
sb.append(convertNum(DateStr[unit].substring(i, i + 1)));
}
}
if (unit == 1 || unit == 2) {
return sb.toString().replaceAll("^壹", "").replace("零", "");
}
return sb.toString();
}
private static String convertNum(String str) {
return NUMBERS[Integer.valueOf(str)];
}
public final static char[] upper = "零一二三四五六七八九十".toCharArray();
public static String getUpperDate(String date) {
if(date == null) return null;
date = date.replaceAll("\\D", "");
if(date.length() != 8) return null;
StringBuilder sb = new StringBuilder();
for (int i=0;i<4;i++) {
sb.append(upper[Integer.parseInt(date.substring(i, i+1))]);
}
sb.append("年");
int month = Integer.parseInt(date.substring(4, 6));
if(month <= 10) {
sb.append(upper[month]);
} else {
sb.append("十").append(upper[month%10]);
}
sb.append("月");
int day = Integer.parseInt(date.substring(6));
if (day <= 10) {
sb.append(upper[day]);
} else if(day < 20) {
sb.append("十").append(upper[day % 10]);
} else {
sb.append(upper[day / 10]).append("十");
int tmp = day % 10;
if (tmp != 0) sb.append(upper[tmp]);
}
sb.append("日");
return sb.toString();
}
public static boolean isNumeric(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if (!isNum.matches()) {
return false;
}
return true;
}
public static void main(String args[]) {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String format = sdf.format(new Date());
System.out.println(getUpperDate(format));
}
}