GitHub user ashr123 edited a comment on the discussion: Getting current
date-time format (or default format)
in addition, why can't all the named patterns be an enum with 3 fields (base
pattern, compact postfix and non-compact postfix) and a getter with `boolean
compact` parameter that returns the correct pattern:
```java
public enum NamedPattern {
ABSOLUTE("HH:mm:ss,SSS", "nnnnnn", "SSSSSS"),
ABSOLUTE_MICROS("HH:mm:ss,", "nnnnnn", "SSSSSS"),
ABSOLUTE_NANOS("HH:mm:ss,", "nnnnnnnnn", "SSSSSSSSS"),
ABSOLUTE_PERIOD("HH:mm:ss.SSS", "", ""),
COMPACT("yyyyMMddHHmmssSSS", "", ""),
DATE("dd MMM yyyy HH:mm:ss,SSS", "", ""),
DATE_PERIOD("dd MMM yyyy HH:mm:ss.SSS", "", ""),
DEFAULT("yyyy-MM-dd HH:mm:ss,SSS", "", ""),
DEFAULT_MICROS("yyyy-MM-dd HH:mm:ss,", "nnnnnn", "SSSSSS"),
DEFAULT_NANOS("yyyy-MM-dd HH:mm:ss,", "nnnnnnnnn", "SSSSSSSSS"),
DEFAULT_PERIOD("yyyy-MM-dd HH:mm:ss.SSS", "", ""),
ISO8601_BASIC("yyyyMMdd'T'HHmmss,SSS", "", ""),
ISO8601_BASIC_PERIOD("yyyyMMdd'T'HHmmss.SSS", "", ""),
ISO8601("yyyy-MM-dd'T'HH:mm:ss,SSS", "", ""),
ISO8601_OFFSET_DATE_TIME_HH("yyyy-MM-dd'T'HH:mm:ss,SSS", "X", "x"),
ISO8601_OFFSET_DATE_TIME_HHMM("yyyy-MM-dd'T'HH:mm:ss,SSS", "XX", "xx"),
ISO8601_OFFSET_DATE_TIME_HHCMM("yyyy-MM-dd'T'HH:mm:ss,SSS", "XXX", "xxx"),
ISO8601_PERIOD("yyyy-MM-dd'T'HH:mm:ss.SSS", "", ""),
ISO8601_PERIOD_MICROS("yyyy-MM-dd'T'HH:mm:ss.", "nnnnnn", "SSSSSS"),
US_MONTH_DAY_YEAR2_TIME("dd/MM/yy HH:mm:ss.SSS", "", ""),
US_MONTH_DAY_YEAR4_TIME("dd/MM/yyyy HH:mm:ss.SSS", "", "");
private final String
basePattern,
compactPostfix,
nonCompactPostfix;
NamedPattern(String basePattern, String compactPostfix, String
nonCompactPostfix) {
this.basePattern = basePattern;
this.compactPostfix = compactPostfix;
this.nonCompactPostfix = nonCompactPostfix;
}
public String decodeNamedPattern(boolean isCompact) {
return basePattern + (isCompact ? compactPostfix : nonCompactPostfix);
}
}
```
And inside `DatePatternConverter`:
```java
static String decodeNamedPattern(final String pattern) {
try {
return NamedPattern.valueOf(pattern)
.decodeNamedPattern(InstantPatternFormatter.LEGACY_FORMATTERS_ENABLED);
} catch (IllegalArgumentException e) {
return pattern;
}
}
```
Or
```java
public enum NamedPattern {
ABSOLUTE("HH:mm:ss,SSS", "HH:mm:ss,SSS"),
ABSOLUTE_MICROS("HH:mm:ss,nnnnnn", "HH:mm:ss,SSSSSS"),
ABSOLUTE_NANOS("HH:mm:ss,nnnnnnnnn", "HH:mm:ss,SSSSSSSSS"),
ABSOLUTE_PERIOD("HH:mm:ss.SSS", "HH:mm:ss.SSS"),
COMPACT("yyyyMMddHHmmssSSS", "yyyyMMddHHmmssSSS"),
DATE("dd MMM yyyy HH:mm:ss,SSS", "dd MMM yyyy HH:mm:ss,SSS"),
DATE_PERIOD("dd MMM yyyy HH:mm:ss.SSS", "dd MMM yyyy HH:mm:ss.SSS"),
DEFAULT("yyyy-MM-dd HH:mm:ss,SSS", "yyyy-MM-dd HH:mm:ss,SSS"),
DEFAULT_MICROS("yyyy-MM-dd HH:mm:ss,nnnnnn", "yyyy-MM-dd HH:mm:ss,SSSSSS"),
DEFAULT_NANOS("yyyy-MM-dd HH:mm:ss,nnnnnnnnn", "yyyy-MM-dd
HH:mm:ss,SSSSSSSSS"),
DEFAULT_PERIOD("yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd HH:mm:ss.SSS"),
ISO8601_BASIC("yyyyMMdd'T'HHmmss,SSS", "yyyyMMdd'T'HHmmss,SSS"),
ISO8601_BASIC_PERIOD("yyyyMMdd'T'HHmmss.SSS", "yyyyMMdd'T'HHmmss.SSS"),
ISO8601("yyyy-MM-dd'T'HH:mm:ss,SSS", "yyyy-MM-dd'T'HH:mm:ss,SSS"),
ISO8601_OFFSET_DATE_TIME_HH("yyyy-MM-dd'T'HH:mm:ss,SSSX",
"yyyy-MM-dd'T'HH:mm:ss,SSSx"),
ISO8601_OFFSET_DATE_TIME_HHMM("yyyy-MM-dd'T'HH:mm:ss,SSSyyyy-MM-dd'T'HH:mm:ss,SSSXX",
"yyyy-MM-dd'T'HH:mm:ss,SSSxx"),
ISO8601_OFFSET_DATE_TIME_HHCMM("yyyy-MM-dd'T'HH:mm:ss,SSSyyyy-MM-dd'T'HH:mm:ss,SSSXXX",
"yyyy-MM-dd'T'HH:mm:ss,SSSxxx"),
ISO8601_PERIOD("yyyy-MM-dd'T'HH:mm:ss.SSS", "yyyy-MM-dd'T'HH:mm:ss.SSS"),
ISO8601_PERIOD_MICROS("yyyy-MM-dd'T'HH:mm:ss.nnnnnn",
"yyyy-MM-dd'T'HH:mm:ss.SSSSSS"),
US_MONTH_DAY_YEAR2_TIME("dd/MM/yy HH:mm:ss.SSS", "dd/MM/yy HH:mm:ss.SSS"),
US_MONTH_DAY_YEAR4_TIME("dd/MM/yyyy HH:mm:ss.SSS", "dd/MM/yyyy
HH:mm:ss.SSS");
private final String
compactPattern,
nonCompactPattern;
NamedPattern2(String compactPattern, String nonCompactPattern) {
this.compactPattern = compactPattern;
this.nonCompactPattern = nonCompactPattern;
}
public String getCompactPattern() {
return compactPattern;
}
public String getNonCompactPattern() {
return nonCompactPattern;
}
}
```
And
```java
static String decodeNamedPattern(final String pattern) {
try {
final NamedPattern namedPattern = NamedPattern.valueOf(pattern);
return InstantPatternFormatter.LEGACY_FORMATTERS_ENABLED ?
namedPattern.getCompactPattern() :
namedPattern.getNonCompactPattern();
} catch (IllegalArgumentException e) {
return pattern;
}
}
```
GitHub link:
https://github.com/apache/logging-log4j2/discussions/3788#discussioncomment-13600805
----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]