一尘不染

来自joda-time DateTimeFormatter的模式字符串?

java

是否可以从Joda-Time DateTimeFormatter获取模式字符串?

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = formatter. ???

阅读 240

收藏
2020-12-03

共1个答案

一尘不染

Joda
Time无法提供从DateTimeFormatter获取原始模式的方法。原因之一可能是DateTimeFormatter不一定是从模式创建的。例如DateTimeFormat.forStyle()根本不使用模式。

但是,如果您始终使用模式,则可以包装DateTimeFormat该类以在DateTimeFormatter构建时记录模式。这样,您以后可以使用简单的静态方法进行查找。例如:

public class ReversableDateTimeFormat {

  private static final Map<DateTimeFormatter, String> patternHistory = new HashMap<DateTimeFormatter, String>();

  public static DateTimeFormatter forPattern(String pattern) {
    DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(pattern);
    patternHistory.put(dateTimeFormatter, pattern);
    return dateTimeFormatter;
  }

  public static String getPattern(DateTimeFormatter dateTimeFormatter) {
    return patternHistory.get(dateTimeFormatter);
  }

}

然后,您可以执行以下操作:

DateTimeFormatter formatter = ReversableDateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = ReverseableDateTimeFormat.getPattern(formatter);
2020-12-03