From f93017e49f812007ea52449d70fd663993381109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=81=A5?= Date: Fri, 19 Jun 2020 20:19:43 +0800 Subject: [PATCH] =?UTF-8?q?DateUtil=E5=A2=9E=E5=8A=A0formatChineseDateTime?= =?UTF-8?q?=20=E8=BD=AC=E5=8C=96=E4=B8=BA=E4=B8=AD=E6=96=87=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E6=A0=BC=E5=BC=8F=E5=88=B0=E6=97=B6=E5=88=86=E7=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/date/DatePattern.java | 5 +++ .../java/cn/hutool/core/date/DateUtil.java | 36 +++++++++++++++++++ .../cn/hutool/core/date/DateUtilTest.java | 6 ++++ 3 files changed, 47 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DatePattern.java b/hutool-core/src/main/java/cn/hutool/core/date/DatePattern.java index a773b0e81..372fa7a46 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/DatePattern.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DatePattern.java @@ -62,6 +62,11 @@ public class DatePattern { /** 标准日期格式 {@link FastDateFormat}:yyyy年MM月dd日 */ public static final FastDateFormat CHINESE_DATE_FORMAT = FastDateFormat.getInstance(CHINESE_DATE_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秒*/ + public static final FastDateFormat CHINESE_DATE_TIME_FORMAT = FastDateFormat.getInstance(CHINESE_DATE_TIME_PATTERN); + //-------------------------------------------------------------------------------------------------------------------------------- Pure /** 标准日期格式:yyyyMMdd */ public static final String PURE_DATE_PATTERN = "yyyyMMdd"; diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java index 1155ce1eb..17eb2979a 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java @@ -636,6 +636,42 @@ public class DateUtil extends CalendarUtil { } return format; } + + /** + * 格式化为中文日期格式,如果isUppercase为false,则返回类似:2018年10月24日 12时13分14秒,否则返回二〇一八年十月二十四日 十二时十三分十四秒 + * + * @param date 被格式化的日期 + * @param isUppercase 是否采用大写形式 + * @return 中文日期字符串 + * @since 4.1.19 + */ + public static String formatChineseDateTime(Date date, boolean isUppercase) { + if (null == date) { + return null; + } + + String format = DatePattern.CHINESE_DATE_TIME_FORMAT.format(date); + if (isUppercase) { + final StringBuilder builder = StrUtil.builder(format.length()); + builder.append(Convert.numberToChinese(Integer.parseInt(format.substring(0, 1)), false)); + builder.append(Convert.numberToChinese(Integer.parseInt(format.substring(1, 2)), false)); + builder.append(Convert.numberToChinese(Integer.parseInt(format.substring(2, 3)), false)); + builder.append(Convert.numberToChinese(Integer.parseInt(format.substring(3, 4)), false)); + builder.append(format, 4, 5); + builder.append(Convert.numberToChinese(Integer.parseInt(format.substring(5, 7)), false)); + builder.append(format, 7, 8); + builder.append(Convert.numberToChinese(Integer.parseInt(format.substring(8, 10)), false)); + builder.append(format, 10, 11); + builder.append(Convert.numberToChinese(Integer.parseInt(format.substring(11, 13)), false)); + builder.append(format, 13, 14); + builder.append(Convert.numberToChinese(Integer.parseInt(format.substring(14, 16)), false)); + builder.append(format, 16, 17); + builder.append(Convert.numberToChinese(Integer.parseInt(format.substring(17, 19)), false)); + builder.append(format.substring(19)); + format = builder.toString().replace('零', '〇'); + } + return format; + } // ------------------------------------ Format end ---------------------------------------------- // ------------------------------------ Parse start ---------------------------------------------- diff --git a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java index d4a3e7fd5..5ffcfb86c 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java @@ -223,6 +223,12 @@ public class DateUtilTest { String formatChineseDate = DateUtil.formatChineseDate(DateUtil.parse("2018-02-24"), true); Assert.assertEquals("二〇一八年二月二十四日", formatChineseDate); } + + @Test + public void formatChineseDateTimeTest() { + String formatChineseDateTime = DateUtil.formatChineseDateTime(DateUtil.parse("2018-02-24 12:13:14"), true); + Assert.assertEquals("二〇一八年二月二十四日一十二时一十三分一十四秒", formatChineseDateTime); + } @Test public void formatBetweenTest() {