add method

This commit is contained in:
Looly 2020-06-23 12:15:28 +08:00
parent aa2859443d
commit 93d68637ef
3 changed files with 152 additions and 49 deletions

View File

@ -141,6 +141,23 @@ public class NumberChineseFormatter {
} }
/**
* 数字字符转中文非数字字符原样返回
*
* @param c 数字字符
* @param isUseTraditional 是否繁体
* @return 中文字符
* @since 5.3.9
*/
public static String numberCharToChinese(char c, boolean isUseTraditional) {
String[] numArray = isUseTraditional ? traditionalDigits : simpleDigits;
int index = c - 48;
if (index < 0 || index >= numArray.length) {
return String.valueOf(c);
}
return numArray[index];
}
/** /**
* 把一个 0~9999 之间的整数转换为汉字的字符串如果是 0 则返回 "" * 把一个 0~9999 之间的整数转换为汉字的字符串如果是 0 则返回 ""
* *

View File

@ -10,7 +10,6 @@ import java.util.regex.Pattern;
* 日期格式化类提供常用的日期格式化对象 * 日期格式化类提供常用的日期格式化对象
* *
* @author Looly * @author Looly
*
*/ */
public class DatePattern { public class DatePattern {
@ -22,100 +21,173 @@ public class DatePattern {
* yyyy-MM-dd HH:mm * yyyy-MM-dd HH:mm
* yyyy-MM-dd * yyyy-MM-dd
* </pre> * </pre>
*
* @since 5.3.6 * @since 5.3.6
*/ */
public static final Pattern REGEX_NORM = Pattern.compile("\\d{4}-\\d{1,2}-\\d{1,2}(\\s\\d{1,2}:\\d{1,2}(:\\d{1,2})?)?(.\\d{1,3})?"); public static final Pattern REGEX_NORM = Pattern.compile("\\d{4}-\\d{1,2}-\\d{1,2}(\\s\\d{1,2}:\\d{1,2}(:\\d{1,2})?)?(.\\d{1,3})?");
//-------------------------------------------------------------------------------------------------------------------------------- Normal //-------------------------------------------------------------------------------------------------------------------------------- Normal
/** 标准日期格式yyyy-MM-dd */ /**
* 标准日期格式yyyy-MM-dd
*/
public static final String NORM_DATE_PATTERN = "yyyy-MM-dd"; public static final String NORM_DATE_PATTERN = "yyyy-MM-dd";
/** 标准日期格式 {@link FastDateFormat}yyyy-MM-dd */ /**
* 标准日期格式 {@link FastDateFormat}yyyy-MM-dd
*/
public static final FastDateFormat NORM_DATE_FORMAT = FastDateFormat.getInstance(NORM_DATE_PATTERN); public static final FastDateFormat NORM_DATE_FORMAT = FastDateFormat.getInstance(NORM_DATE_PATTERN);
/** 标准时间格式HH:mm:ss */ /**
* 标准时间格式HH:mm:ss
*/
public static final String NORM_TIME_PATTERN = "HH:mm:ss"; public static final String NORM_TIME_PATTERN = "HH:mm:ss";
/** 标准时间格式 {@link FastDateFormat}HH:mm:ss */ /**
* 标准时间格式 {@link FastDateFormat}HH:mm:ss
*/
public static final FastDateFormat NORM_TIME_FORMAT = FastDateFormat.getInstance(NORM_TIME_PATTERN); public static final FastDateFormat NORM_TIME_FORMAT = FastDateFormat.getInstance(NORM_TIME_PATTERN);
/** 标准日期时间格式精确到分yyyy-MM-dd HH:mm */ /**
* 标准日期时间格式精确到分yyyy-MM-dd HH:mm
*/
public static final String NORM_DATETIME_MINUTE_PATTERN = "yyyy-MM-dd HH:mm"; public static final String NORM_DATETIME_MINUTE_PATTERN = "yyyy-MM-dd HH:mm";
/** 标准日期时间格式,精确到分 {@link FastDateFormat}yyyy-MM-dd HH:mm */ /**
* 标准日期时间格式精确到分 {@link FastDateFormat}yyyy-MM-dd HH:mm
*/
public static final FastDateFormat NORM_DATETIME_MINUTE_FORMAT = FastDateFormat.getInstance(NORM_DATETIME_MINUTE_PATTERN); public static final FastDateFormat NORM_DATETIME_MINUTE_FORMAT = FastDateFormat.getInstance(NORM_DATETIME_MINUTE_PATTERN);
/** 标准日期时间格式精确到秒yyyy-MM-dd HH:mm:ss */ /**
* 标准日期时间格式精确到秒yyyy-MM-dd HH:mm:ss
*/
public static final String NORM_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; public static final String NORM_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
/** 标准日期时间格式,精确到秒 {@link FastDateFormat}yyyy-MM-dd HH:mm:ss */ /**
* 标准日期时间格式精确到秒 {@link FastDateFormat}yyyy-MM-dd HH:mm:ss
*/
public static final FastDateFormat NORM_DATETIME_FORMAT = FastDateFormat.getInstance(NORM_DATETIME_PATTERN); public static final FastDateFormat NORM_DATETIME_FORMAT = FastDateFormat.getInstance(NORM_DATETIME_PATTERN);
/** 标准日期时间格式精确到毫秒yyyy-MM-dd HH:mm:ss.SSS */ /**
* 标准日期时间格式精确到毫秒yyyy-MM-dd HH:mm:ss.SSS
*/
public static final String NORM_DATETIME_MS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS"; public static final String NORM_DATETIME_MS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";
/** 标准日期时间格式,精确到毫秒 {@link FastDateFormat}yyyy-MM-dd HH:mm:ss.SSS */ /**
* 标准日期时间格式精确到毫秒 {@link FastDateFormat}yyyy-MM-dd HH:mm:ss.SSS
*/
public static final FastDateFormat NORM_DATETIME_MS_FORMAT = FastDateFormat.getInstance(NORM_DATETIME_MS_PATTERN); public static final FastDateFormat NORM_DATETIME_MS_FORMAT = FastDateFormat.getInstance(NORM_DATETIME_MS_PATTERN);
/** ISO8601日期时间格式精确到毫秒yyyy-MM-dd HH:mm:ss,SSS */ /**
* ISO8601日期时间格式精确到毫秒yyyy-MM-dd HH:mm:ss,SSS
*/
public static final String ISO8601_PATTERN = "yyyy-MM-dd HH:mm:ss,SSS"; public static final String ISO8601_PATTERN = "yyyy-MM-dd HH:mm:ss,SSS";
/** ISO8601日期时间格式精确到毫秒 {@link FastDateFormat}yyyy-MM-dd HH:mm:ss,SSS */ /**
* ISO8601日期时间格式精确到毫秒 {@link FastDateFormat}yyyy-MM-dd HH:mm:ss,SSS
*/
public static final FastDateFormat ISO8601_FORMAT = FastDateFormat.getInstance(ISO8601_PATTERN); public static final FastDateFormat ISO8601_FORMAT = FastDateFormat.getInstance(ISO8601_PATTERN);
/** 标准日期格式yyyy年MM月dd日 */ /**
* 标准日期格式yyyy年MM月dd日
*/
public static final String CHINESE_DATE_PATTERN = "yyyy年MM月dd日"; public static final String CHINESE_DATE_PATTERN = "yyyy年MM月dd日";
/** 标准日期格式 {@link FastDateFormat}yyyy年MM月dd日 */ /**
* 标准日期格式 {@link FastDateFormat}yyyy年MM月dd日
*/
public static final FastDateFormat CHINESE_DATE_FORMAT = FastDateFormat.getInstance(CHINESE_DATE_PATTERN); public static final FastDateFormat CHINESE_DATE_FORMAT = FastDateFormat.getInstance(CHINESE_DATE_PATTERN);
/** 标准日期格式yyyy年MM月dd日 HH时mm分ss秒 */ /**
* 标准日期格式yyyy年MM月dd日 HH时mm分ss秒
*/
public static final String CHINESE_DATE_TIME_PATTERN = "yyyy年MM月dd日HH时mm分ss秒"; public static final String CHINESE_DATE_TIME_PATTERN = "yyyy年MM月dd日HH时mm分ss秒";
/** 标准日期格式 {@link FastDateFormat}yyyy年MM月dd日HH时mm分ss秒*/ /**
* 标准日期格式 {@link FastDateFormat}yyyy年MM月dd日HH时mm分ss秒
*/
public static final FastDateFormat CHINESE_DATE_TIME_FORMAT = FastDateFormat.getInstance(CHINESE_DATE_TIME_PATTERN); public static final FastDateFormat CHINESE_DATE_TIME_FORMAT = FastDateFormat.getInstance(CHINESE_DATE_TIME_PATTERN);
//-------------------------------------------------------------------------------------------------------------------------------- Pure //-------------------------------------------------------------------------------------------------------------------------------- Pure
/** 标准日期格式yyyyMMdd */ /**
* 标准日期格式yyyyMMdd
*/
public static final String PURE_DATE_PATTERN = "yyyyMMdd"; public static final String PURE_DATE_PATTERN = "yyyyMMdd";
/** 标准日期格式 {@link FastDateFormat}yyyyMMdd */ /**
* 标准日期格式 {@link FastDateFormat}yyyyMMdd
*/
public static final FastDateFormat PURE_DATE_FORMAT = FastDateFormat.getInstance(PURE_DATE_PATTERN); public static final FastDateFormat PURE_DATE_FORMAT = FastDateFormat.getInstance(PURE_DATE_PATTERN);
/** 标准日期格式HHmmss */ /**
* 标准日期格式HHmmss
*/
public static final String PURE_TIME_PATTERN = "HHmmss"; public static final String PURE_TIME_PATTERN = "HHmmss";
/** 标准日期格式 {@link FastDateFormat}HHmmss */ /**
* 标准日期格式 {@link FastDateFormat}HHmmss
*/
public static final FastDateFormat PURE_TIME_FORMAT = FastDateFormat.getInstance(PURE_TIME_PATTERN); public static final FastDateFormat PURE_TIME_FORMAT = FastDateFormat.getInstance(PURE_TIME_PATTERN);
/** 标准日期格式yyyyMMddHHmmss */ /**
* 标准日期格式yyyyMMddHHmmss
*/
public static final String PURE_DATETIME_PATTERN = "yyyyMMddHHmmss"; public static final String PURE_DATETIME_PATTERN = "yyyyMMddHHmmss";
/** 标准日期格式 {@link FastDateFormat}yyyyMMddHHmmss */ /**
* 标准日期格式 {@link FastDateFormat}yyyyMMddHHmmss
*/
public static final FastDateFormat PURE_DATETIME_FORMAT = FastDateFormat.getInstance(PURE_DATETIME_PATTERN); public static final FastDateFormat PURE_DATETIME_FORMAT = FastDateFormat.getInstance(PURE_DATETIME_PATTERN);
/** 标准日期格式yyyyMMddHHmmssSSS */ /**
* 标准日期格式yyyyMMddHHmmssSSS
*/
public static final String PURE_DATETIME_MS_PATTERN = "yyyyMMddHHmmssSSS"; public static final String PURE_DATETIME_MS_PATTERN = "yyyyMMddHHmmssSSS";
/** 标准日期格式 {@link FastDateFormat}yyyyMMddHHmmssSSS */ /**
* 标准日期格式 {@link FastDateFormat}yyyyMMddHHmmssSSS
*/
public static final FastDateFormat PURE_DATETIME_MS_FORMAT = FastDateFormat.getInstance(PURE_DATETIME_MS_PATTERN); public static final FastDateFormat PURE_DATETIME_MS_FORMAT = FastDateFormat.getInstance(PURE_DATETIME_MS_PATTERN);
//-------------------------------------------------------------------------------------------------------------------------------- Others //-------------------------------------------------------------------------------------------------------------------------------- Others
/** HTTP头中日期时间格式EEE, dd MMM yyyy HH:mm:ss z */ /**
* HTTP头中日期时间格式EEE, dd MMM yyyy HH:mm:ss z
*/
public static final String HTTP_DATETIME_PATTERN = "EEE, dd MMM yyyy HH:mm:ss z"; public static final String HTTP_DATETIME_PATTERN = "EEE, dd MMM yyyy HH:mm:ss z";
/** HTTP头中日期时间格式 {@link FastDateFormat}EEE, dd MMM yyyy HH:mm:ss z */ /**
* HTTP头中日期时间格式 {@link FastDateFormat}EEE, dd MMM yyyy HH:mm:ss z
*/
public static final FastDateFormat HTTP_DATETIME_FORMAT = FastDateFormat.getInstance(HTTP_DATETIME_PATTERN, TimeZone.getTimeZone("GMT"), Locale.US); public static final FastDateFormat HTTP_DATETIME_FORMAT = FastDateFormat.getInstance(HTTP_DATETIME_PATTERN, TimeZone.getTimeZone("GMT"), Locale.US);
/** JDK中日期时间格式EEE MMM dd HH:mm:ss zzz yyyy */ /**
* JDK中日期时间格式EEE MMM dd HH:mm:ss zzz yyyy
*/
public static final String JDK_DATETIME_PATTERN = "EEE MMM dd HH:mm:ss zzz yyyy"; public static final String JDK_DATETIME_PATTERN = "EEE MMM dd HH:mm:ss zzz yyyy";
/** JDK中日期时间格式 {@link FastDateFormat}EEE MMM dd HH:mm:ss zzz yyyy */ /**
* JDK中日期时间格式 {@link FastDateFormat}EEE MMM dd HH:mm:ss zzz yyyy
*/
public static final FastDateFormat JDK_DATETIME_FORMAT = FastDateFormat.getInstance(JDK_DATETIME_PATTERN, Locale.US); public static final FastDateFormat JDK_DATETIME_FORMAT = FastDateFormat.getInstance(JDK_DATETIME_PATTERN, Locale.US);
/** UTC时间yyyy-MM-dd'T'HH:mm:ss'Z' */ /**
* UTC时间yyyy-MM-dd'T'HH:mm:ss'Z'
*/
public static final String UTC_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'"; public static final String UTC_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'";
/** UTC时间{@link FastDateFormat}yyyy-MM-dd'T'HH:mm:ss'Z' */ /**
* UTC时间{@link FastDateFormat}yyyy-MM-dd'T'HH:mm:ss'Z'
*/
public static final FastDateFormat UTC_FORMAT = FastDateFormat.getInstance(UTC_PATTERN, TimeZone.getTimeZone("UTC")); public static final FastDateFormat UTC_FORMAT = FastDateFormat.getInstance(UTC_PATTERN, TimeZone.getTimeZone("UTC"));
/** UTC时间yyyy-MM-dd'T'HH:mm:ssZ */ /**
* UTC时间yyyy-MM-dd'T'HH:mm:ssZ
*/
public static final String UTC_WITH_ZONE_OFFSET_PATTERN = "yyyy-MM-dd'T'HH:mm:ssZ"; public static final String UTC_WITH_ZONE_OFFSET_PATTERN = "yyyy-MM-dd'T'HH:mm:ssZ";
/** UTC时间{@link FastDateFormat}yyyy-MM-dd'T'HH:mm:ssZ */ /**
* UTC时间{@link FastDateFormat}yyyy-MM-dd'T'HH:mm:ssZ
*/
public static final FastDateFormat UTC_WITH_ZONE_OFFSET_FORMAT = FastDateFormat.getInstance(UTC_WITH_ZONE_OFFSET_PATTERN, TimeZone.getTimeZone("UTC")); public static final FastDateFormat UTC_WITH_ZONE_OFFSET_FORMAT = FastDateFormat.getInstance(UTC_WITH_ZONE_OFFSET_PATTERN, TimeZone.getTimeZone("UTC"));
/** UTC时间yyyy-MM-dd'T'HH:mm:ss.SSS'Z' */ /**
* UTC时间yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
*/
public static final String UTC_MS_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; public static final String UTC_MS_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
/** UTC时间{@link FastDateFormat}yyyy-MM-dd'T'HH:mm:ss.SSS'Z' */ /**
* UTC时间{@link FastDateFormat}yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
*/
public static final FastDateFormat UTC_MS_FORMAT = FastDateFormat.getInstance(UTC_MS_PATTERN, TimeZone.getTimeZone("UTC")); public static final FastDateFormat UTC_MS_FORMAT = FastDateFormat.getInstance(UTC_MS_PATTERN, TimeZone.getTimeZone("UTC"));
/** UTC时间yyyy-MM-dd'T'HH:mm:ssZ */ /**
* UTC时间yyyy-MM-dd'T'HH:mm:ssZ
*/
public static final String UTC_MS_WITH_ZONE_OFFSET_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; public static final String UTC_MS_WITH_ZONE_OFFSET_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
/** UTC时间{@link FastDateFormat}yyyy-MM-dd'T'HH:mm:ssZ */ /**
* UTC时间{@link FastDateFormat}yyyy-MM-dd'T'HH:mm:ssZ
*/
public static final FastDateFormat UTC_MS_WITH_ZONE_OFFSET_FORMAT = FastDateFormat.getInstance(UTC_MS_WITH_ZONE_OFFSET_PATTERN, TimeZone.getTimeZone("UTC")); public static final FastDateFormat UTC_MS_WITH_ZONE_OFFSET_FORMAT = FastDateFormat.getInstance(UTC_MS_WITH_ZONE_OFFSET_PATTERN, TimeZone.getTimeZone("UTC"));
} }

View File

@ -65,4 +65,18 @@ public class NumberChineseFormatterTest {
String digitToChinese3 = Convert.digitToChinese(2421.02); String digitToChinese3 = Convert.digitToChinese(2421.02);
Assert.assertEquals("贰仟肆佰贰拾壹元零贰分", digitToChinese3); Assert.assertEquals("贰仟肆佰贰拾壹元零贰分", digitToChinese3);
} }
@Test
public void numberCharToChineseTest(){
String s = NumberChineseFormatter.numberCharToChinese('1', false);
Assert.assertEquals("", s);
s = NumberChineseFormatter.numberCharToChinese('2', false);
Assert.assertEquals("", s);
s = NumberChineseFormatter.numberCharToChinese('0', false);
Assert.assertEquals("", s);
// 非数字字符原样返回
s = NumberChineseFormatter.numberCharToChinese('A', false);
Assert.assertEquals("A", s);
}
} }