1、DatePattern add DateTimeFormatter

2、FastDateFormat add convert DateTimeFormatter
This commit is contained in:
duandazhi 2021-04-11 10:24:47 +08:00
parent ef4d444248
commit 34bfea1efd
2 changed files with 64 additions and 1 deletions

View File

@ -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
/**

View File

@ -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