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;

    NamedPattern(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 dev@logging.apache.org.
To unsubscribe, please send an email to: dev-unsubscr...@logging.apache.org

Reply via email to