是否有可能從joda-time DateTimeFormatter獲取模式字符串?來自joda-time DateTimeFormatter的模式字符串?
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = formatter. ???
是否有可能從joda-time DateTimeFormatter獲取模式字符串?來自joda-time DateTimeFormatter的模式字符串?
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = formatter. ???
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);
非常好。有時候,你只是在尋找一個好老的「那是不可能的」。對於適用的情況也是一個很好的解決方案。 – charleslparker
答案是完全正確的。但是,如果你想使用樣式並且知道模式,你可以使用'DateTimeFormat.patternForStyle()'。 –
我假設你希望得到' 「年月日」'回來嗎?在你的特定例子中,你可以聲明一個單獨的'String'變量。有沒有足夠的理由? –
@MattBall,幾乎肯定是因爲這只是一個簡單的例子來說明問題。這個問題本身就很清楚。 –
僅供參考,類似問題的java.time:[獲取原始模式字符串給定JDK 8 DateTimeFormatter?](http://stackoverflow.com/q/28949179/642706)。 java.time類取代了Joda-Time項目。 –