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から元のパターンを取得する方法を提供しません。 1つの理由は、DateTimeFormatterが必ずしもパターンから作成されたとは限りません。たとえばDateTimeFormat.forStyle()
はパターンをまったく使用しません。
しかし、常にパターンを使用する場合は、DateTimeFormatter
が構築されたときにDateTimeFormat
クラスをラップしてパターンを記録することができます。そうすれば、簡単な静的メソッドで後で見ることができます。たとえば:
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()'を使用することができます。 –
を私は仮定し、あなたが戻って '' "YYYYMMDD" を得るために探していますか?あなたの特定の例では、別の 'String'変数を宣言するだけです。十分ではない理由はありますか? –
@MattBall、これはほぼ確実に問題を説明するための単純な例です。質問そのものは十分明確です。 –
FYI同様の質問:[JDK 8のDateTimeFormatterを指定した元のパターン文字列を取得する](http://stackoverflow.com/q/28949179/642706) java.timeクラスは、Joda-Timeプロジェクトに取って代わるものです。 –