Строка шаблона из joda-time DateTimeFormatter?

Можно ли получить строку шаблона из jQuery DateTimeFormatter?

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

Ответы

Ответ 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);