我被要求在电子文件上签名盖章并生成相应的日期,但日期不是我们平时使用的格式,而是中文日期(例如2019年9月6日)。
这种需求尤其在银行的行业中,可能会要求把数字金钱转成中文来表示。相信有些小伙伴也会遇到这样的需求,以下贴出我的工具类。/** * 获取大写当前时间 * * @return */ public static String getDateBigDate(Date date) { if (date == null) { return ""; } return getStrBigDate(date)); } /** * 获取大写时间 * * @return */ public static String getStrBigDate(String date) { return Da(date); } package com.wei; import java.u; import java.u; /** * 日期转成中文大写形式 * */ public class DateToUpperChinese { private static final String[] NUMBERS = {"0", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; // private static final String[] NUMBERS = {"零", "壹", "贰", "叁", "肆", "伍", // "陆", "柒", "捌", "玖"}; /** * 通过 yyyy-MM-dd 得到中文大写格式 yyyy MM dd 日期 */ public static synchronized String toChinese(String str) { StringBuffer sb = new StringBuffer(); (getSplitDateStr(str, 0)).append("年").append( getSplitDateStr(str, 1)).append("月").append( getSplitDateStr(str, 2)).append("日"); return (); } /** * 分别得到年月日的大写 默认分割符 "-" */ public static String getSplitDateStr(String str, int unit) { // unit是单位 0=年 1=月 2日 String[] DateStr = ("-"); if (unit > Da) unit = 0; StringBuffer sb = new StringBuffer(); for (int i = 0; i < DateStr[unit].length(); i++) { if ((unit == 1 || unit == 2) && In(DateStr[unit]) > 9) { (convertNum(DateStr[unit].substring(0, 1))) .append("十").append( convertNum(DateStr[unit].substring(1, 2))); break; }else if(unit == 1 && "0".equals(DateStr[unit].substring(0, i + 1))){ continue; }else if(unit == 2 && "0".equals(DateStr[unit].substring(0, i + 1))){ continue; } else { (convertNum(DateStr[unit].substring(i, i + 1))); } } if (unit == 1 || unit == 2) { return ().replaceAll("^壹", "").replace("零", ""); } return (); } /** * 转换数字为大写 */ private static String convertNum(String str) { return NUMBERS[In(str)]; } /** * 判断是否是零或正整数 */ public static boolean isNumeric(String str) { Pattern pattern = Pa("[0-9]*"); Matcher isNum = (str); if (!i()) { return false; } return true; } }测试结果: