/**
* 日期转换成中文服务类
* @author zhangzw
*2013-04-11
*/
public class DateToUpperChinese {
private static final String[] NUMBERS = { "O", "一", "二", "三", "四", "五",
"六", "七", "八", "九" };
/**
* 拼接中文日期
* @author zhangzw
*@date 2013-04-11
*/
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)).append("日");
return sb.toString();
}
/**
* 年,月,日逐一转换成中文
* @author zhangzw
*@date 2013-04-11
*/
public static String getSplitDateStr(String str, int unit) {
// unit是单位 0=年 1=月 2日
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) {
if(Integer.valueOf(DateStr[unit]) <20){
sb.append("")
.append("十").append(
convertNum(DateStr[unit].substring(1, 2)));
}else{
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("^O", "").replace("", "").replace("十O", "十");
}
return sb.toString().replace("十O", "十");
}
/**
* 将数字转换成中文
* @author zhangzw
*2013-04-11
*/
private static String convertNum(String str) {
return NUMBERS[Integer.valueOf(str)];
}
/**
* 测试方法
* @author zhangzw
*2013-04-11
*/
public static void main(String args[]) {
System.out.println(toChinese("2008-10-02"));
}
}
以上代码我觉得
还有一种更为简单的方式
也是要切成三段
第一段全部
先把特殊字符转成
就是把数字全部对应替换成汉字