java實現日期轉中文大寫形式
阿新 • • 發佈:2019-01-07
這是用java實現的將日期轉中文大寫形式的一個工具類
package jb.peng.com.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 日期轉成中文大寫形式
*
*/
public class DateToUpperChinese {
private static final String[] NUMBERS = { "零", "壹", "貳", "叄", "肆", "伍",
"陸", "柒", "捌", "玖" };
/** 通過 yyyy-MM-dd 得到中文大寫格式 yyyy MM dd 日期 */
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) {
// 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) {
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 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[]) {
System.out.println(toChinese("2008-10-02"));
}
}
執行程式main方法,測試結果如下:
貳零零捌 拾 貳