Шаблонная строка из joda-time DateTimeFormatter?

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

<code>DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = formatter. ???
</code>
 Matt Ball08 мая 2012 г., 02:29
Я полагаю, вы ищете, чтобы получить"yyyyMMdd" назад? В вашем конкретном примере вы можете просто объявить отдельныйString переменная. Есть ли причина, которая не будет достаточной?
 Matthew Flaschen08 мая 2012 г., 02:32
@ MattBall, почти наверняка, потому что это просто упрощенный пример для иллюстрации проблемы. Сам вопрос достаточно понятен.
 Basil Bourque25 янв. 2017 г., 01:46
К вашему сведению, аналогичный вопрос для java.time:Get original pattern String given a JDK 8 DateTimeFormatter?, Классы java.time вытесняют проект Joda-Time.

Ответы на вопрос(1)

Решение Вопроса

TimeFormatter. Одна из причин, вероятно, заключается в том, что 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);
 14 нояб. 2014 г., 17:21
Ответ совершенно правильный. Но если вы хотите использовать стили и знать шаблон, вы можете использоватьDateTimeFormat.patternForStyle().
 28 июн. 2012 г., 22:22
Отлично. Иногда вы просто ищете «старый добрый», который «невозможен». Прекрасное решение также для случаев, когда это применимо.

Ваш ответ на вопрос