Czy można uzyskać ciąg wzoru z joda-time DateTimeFormatter?Ciąg wzorcowy od joda-time DateTimeFormatter?
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = formatter. ???
Czy można uzyskać ciąg wzoru z joda-time DateTimeFormatter?Ciąg wzorcowy od joda-time DateTimeFormatter?
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = formatter. ???
Czas Joda nie pozwala uzyskać oryginalnego wzoru z obiektu DateTimeFormatter. Jednym z powodów jest prawdopodobnie to, że obiekt DateTimeFormatter niekoniecznie został utworzony ze wzoru; na przykład DateTimeFormat.forStyle()
w ogóle nie używa wzorców.
Jeśli jednak zawsze używasz wzorców, możesz zawinąć klasę DateTimeFormat
, aby nagrać wzór, gdy zostanie skonstruowany model DateTimeFormatter
. W ten sposób możesz sprawdzić to później za pomocą prostej metody statycznej. Na przykład:
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);
}
}
Następnie można to zrobić:
DateTimeFormatter formatter = ReversableDateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = ReverseableDateTimeFormat.getPattern(formatter);
Doskonały. Czasami po prostu szukasz dobrego, starego "to niemożliwe". Doskonałe rozwiązanie również w przypadkach, w których ma to zastosowanie. – charleslparker
Odpowiedź jest całkowicie poprawna. Ale jeśli chcesz używać stylów i znać wzorzec, możesz użyć 'DateTimeFormat.patternForStyle()'. –
Zakładam szukasz dostać ' "rrrrmmdd"' z powrotem? W twoim konkretnym przykładzie możesz po prostu zadeklarować oddzielną zmienną "String". Czy jest jakiś powód, który nie wystarczy? –
@MattBall, prawie na pewno, ponieważ jest to uproszczony przykład ilustrujący problem. Samo pytanie jest wystarczająco jasne. –
FYI, podobne pytanie dla java.time: [Pobierz oryginalny wzorzec String podany jako JDK 8 DateTimeFormatter?] (Http://stackoverflow.com/q/28949179/642706). Klasy java.time zastępują projekt Joda-Time. –