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

是否可以从joda-time DateTimeFormatter获取模式字符串?

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

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

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

 public class ReversableDateTimeFormat { private static final Map patternHistory = new HashMap(); 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);