org.joda.time.LocalDate.LocalDate
オブジェクトをシームレスに動作させることは可能String.format
ですか? 私がやろうとしていることを説明するための簡単なテストケースを次に示します。
public class JodaTests {
@Test
public void testLocalDateStringFormat() {
final Logger logger = LoggerFactory.getLogger(JodaTests.class);
//works, prints: 2012-06-01
logger.info(String.format("%s", new LocalDate()));
//works, prints: 06/01/2012
logger.info(String.format("%1$tm/%1$td/%1$tY", new LocalDate().toDate()));
//throws java.util.IllegalFormatConversionException: m != org.joda.time.LocalDate
logger.info(String.format("%1$tm/%1$td/%1$tY", new LocalDate()));
}
}
明らかに、メソッドを呼び出して を に変換できます。toDate
これはFormatterで正常に動作します。しかし、Joda や JDK を何らかの方法で構成して、そこにある 3 行目 (例外をスローする行) を機能させる方法はありますか? 私は Web 検索を試みましたが、Joda API も少し検索しましたが、明らかな答えは見つかりませんでした。LocalDate
java.util.Date
明確化: Joda の組み込みの書式設定機能 ( 経由) については知っていますが、使用しているいくつかのライブラリ コードのために、特にwithDateTimeFormat
を書式設定する必要があります。LocalDate
String.format
この記事Formattable
で説明されているように、カスタム型にインターフェイスを実装することで、これを行う機能が制限されているようです。残念ながら、はクラスであるため、(簡単に) 拡張してインターフェイスを実装することはできません。ラッパークラスが唯一の方法だと思います。または、もちろん、フォーマット文字列を使用して個々のフィールド (つまり) をフェッチすることもできますが、これは私の場合は望ましくありません。LocalDate
final
%d
LocalDate.getYear