0

こんにちは、文字列を Joda 時間で DurationFieldType に変換する方法はありますか?

たとえば、「年」 => DurationFieldType.years();

3 年や 5 か月など、指定された単位数で日付を増やそうとしています。文字列値で指定された数量 (整数) と時間単位タイプがあります。

私は何かを見落としていないことを確認したいです。私が思いついた最善の解決策は、HashMapを使用することです

Map<String, DurationFieldType> fieldMap = new HashMap<String, DurationFieldType>();
fieldMap.put("year", DurationFieldType.years());
fieldMap.put("month", DurationFieldType.months());
fieldMap.put("day", DurationFieldType.days());
fieldMap.put("week", DurationFieldType.weeks());
fieldMap.put("hour", DurationFieldType.hours());
...
map = Collections.unmodifiableMap(fieldMap);

DateTime from = new DateTime(...);
Period period = new Period().withField(fieldMap.get(someObject.getTimeUnit()), someObject.getDuration());
DateTime to = from.plus(period);
4

1 に答える 1

2

そのルックアップを行う現在の方法はありません。

必要に応じて、GitHub でプロジェクトをフォークし、これを行うためのメソッド (DurationFieldType.of(String)) を追加することができます。これは、上記のコードが行うことよりも多くのことを行います。プラスいくつかのテスト。そして、プル リクエストを送信します ;-)

于 2012-06-11T09:39:20.450 に答える