From 34bfea1efd391843c7790a6a2b83a1be0019bafc Mon Sep 17 00:00:00 2001 From: duandazhi Date: Sun, 11 Apr 2021 10:24:47 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81DatePattern=20add=20DateTimeFormatter?= =?UTF-8?q?=202=E3=80=81FastDateFormat=20add=20convert=20DateTimeFormatter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/date/DatePattern.java | 41 ++++++++++++++++++- .../core/date/format/FastDateFormat.java | 24 +++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) 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 f89690eee..236435ead 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 @@ -75,6 +75,10 @@ public class DatePattern { * 标准时间格式 {@link FastDateFormat}:HH:mm:ss */ public static final FastDateFormat NORM_TIME_FORMAT = FastDateFormat.getInstance(NORM_TIME_PATTERN); + /** + * 标准日期格式 {@link FastDateFormat}:HH:mm:ss + */ + public static final DateTimeFormatter NORM_TIME_FORMATTER = DateTimeFormatter.ofPattern(NORM_TIME_PATTERN); /** * 标准日期时间格式,精确到分:yyyy-MM-dd HH:mm @@ -84,6 +88,10 @@ public class DatePattern { * 标准日期时间格式,精确到分 {@link FastDateFormat}:yyyy-MM-dd HH:mm */ public static final FastDateFormat NORM_DATETIME_MINUTE_FORMAT = FastDateFormat.getInstance(NORM_DATETIME_MINUTE_PATTERN); + /** + * 标准日期格式 {@link FastDateFormat}:yyyy-MM-dd HH:mm + */ + public static final DateTimeFormatter NORM_DATETIME_MINUTE_FORMATTER = DateTimeFormatter.ofPattern(NORM_DATETIME_MINUTE_PATTERN); /** * 标准日期时间格式,精确到秒:yyyy-MM-dd HH:mm:ss @@ -106,16 +114,23 @@ public class DatePattern { * 标准日期时间格式,精确到毫秒 {@link FastDateFormat}:yyyy-MM-dd HH:mm:ss.SSS */ public static final FastDateFormat NORM_DATETIME_MS_FORMAT = FastDateFormat.getInstance(NORM_DATETIME_MS_PATTERN); + /** + * 标准日期时间格式,精确到毫秒 {@link FastDateFormat}:yyyy-MM-dd HH:mm:ss.SSS + */ + public static final DateTimeFormatter NORM_DATETIME_MS_FORMATTER = DateTimeFormatter.ofPattern(NORM_DATETIME_MS_PATTERN); /** * ISO8601日期时间格式,精确到毫秒: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 */ public static final FastDateFormat ISO8601_FORMAT = FastDateFormat.getInstance(ISO8601_PATTERN); + /** + * 标准日期格式 {@link FastDateFormat}:yyyy-MM-dd HH:mm:ss,SSS + */ + public static final DateTimeFormatter ISO8601_FORMATTER = DateTimeFormatter.ofPattern(ISO8601_PATTERN); /** * 标准日期格式:yyyy年MM月dd日 @@ -125,6 +140,10 @@ public class DatePattern { * 标准日期格式 {@link FastDateFormat}:yyyy年MM月dd日 */ public static final FastDateFormat CHINESE_DATE_FORMAT = FastDateFormat.getInstance(CHINESE_DATE_PATTERN); + /** + * 标准日期格式 {@link FastDateFormat}:yyyy年MM月dd日 + */ + public static final DateTimeFormatter CHINESE_DATE_FORMATTER = DateTimeFormatter.ofPattern(ISO8601_PATTERN); /** * 标准日期格式:yyyy年MM月dd日 HH时mm分ss秒 @@ -134,6 +153,10 @@ public class DatePattern { * 标准日期格式 {@link FastDateFormat}:yyyy年MM月dd日HH时mm分ss秒 */ public static final FastDateFormat CHINESE_DATE_TIME_FORMAT = FastDateFormat.getInstance(CHINESE_DATE_TIME_PATTERN); + /** + * 标准日期格式 {@link FastDateFormat}:yyyy年MM月dd日HH时mm分ss秒 + */ + public static final DateTimeFormatter CHINESE_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(CHINESE_DATE_TIME_PATTERN); //-------------------------------------------------------------------------------------------------------------------------------- Pure /** @@ -144,6 +167,10 @@ public class DatePattern { * 标准日期格式 {@link FastDateFormat}:yyyyMMdd */ public static final FastDateFormat PURE_DATE_FORMAT = FastDateFormat.getInstance(PURE_DATE_PATTERN); + /** + * 标准日期格式 {@link FastDateFormat}:yyyyMMdd + */ + public static final DateTimeFormatter PURE_DATE_FORMATTER = DateTimeFormatter.ofPattern(PURE_DATE_PATTERN); /** * 标准日期格式:HHmmss @@ -153,6 +180,10 @@ public class DatePattern { * 标准日期格式 {@link FastDateFormat}:HHmmss */ public static final FastDateFormat PURE_TIME_FORMAT = FastDateFormat.getInstance(PURE_TIME_PATTERN); + /** + * 标准日期格式 {@link FastDateFormat}:HHmmss + */ + public static final DateTimeFormatter PURE_TIME_FORMATTER = DateTimeFormatter.ofPattern(PURE_TIME_PATTERN); /** * 标准日期格式:yyyyMMddHHmmss @@ -162,6 +193,10 @@ public class DatePattern { * 标准日期格式 {@link FastDateFormat}:yyyyMMddHHmmss */ public static final FastDateFormat PURE_DATETIME_FORMAT = FastDateFormat.getInstance(PURE_DATETIME_PATTERN); + /** + * 标准日期格式 {@link FastDateFormat}:yyyyMMddHHmmss + */ + public static final DateTimeFormatter PURE_DATETIME_FORMATTER = DateTimeFormatter.ofPattern(PURE_DATETIME_PATTERN); /** * 标准日期格式:yyyyMMddHHmmssSSS @@ -171,6 +206,10 @@ public class DatePattern { * 标准日期格式 {@link FastDateFormat}:yyyyMMddHHmmssSSS */ public static final FastDateFormat PURE_DATETIME_MS_FORMAT = FastDateFormat.getInstance(PURE_DATETIME_MS_PATTERN); + /** + * 标准日期格式 {@link FastDateFormat}:yyyyMMddHHmmssSSS + */ + public static final DateTimeFormatter PURE_DATETIME_MS_FORMATTER = DateTimeFormatter.ofPattern(PURE_DATETIME_MS_PATTERN); //-------------------------------------------------------------------------------------------------------------------------------- Others /** diff --git a/hutool-core/src/main/java/cn/hutool/core/date/format/FastDateFormat.java b/hutool-core/src/main/java/cn/hutool/core/date/format/FastDateFormat.java index 792c5ae80..e02fbb2ce 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/format/FastDateFormat.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/format/FastDateFormat.java @@ -1,10 +1,13 @@ package cn.hutool.core.date.format; +import cn.hutool.core.date.DatePattern; + import java.text.DateFormat; import java.text.FieldPosition; import java.text.Format; import java.text.ParseException; import java.text.ParsePosition; +import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.Locale; @@ -372,6 +375,27 @@ public class FastDateFormat extends Format implements DateParser, DatePrinter { return printer.getMaxLengthEstimate(); } + // convert DateTimeFormatter + // ----------------------------------------------------------------------- + + /** + * 便捷获取 DateTimeFormatter + * 由于 {@link DatePattern} 很大一部分的格式没有提供 {@link DateTimeFormatter},因此这里提供快捷获取方式 + * @return DateTimeFormatter + * @author dazer & neusoft + * @since 5.6.4 + */ + public DateTimeFormatter getDateTimeFormatter() { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(this.getPattern()); + if (this.getLocale() != null) { + formatter = formatter.withLocale(this.getLocale()); + } + if (this.getTimeZone() != null) { + formatter = formatter.withZone(this.getTimeZone().toZoneId()); + } + return formatter; + } + // Basics // ----------------------------------------------------------------------- @Override