您好,有一种方法可以在乔达时间将String转换为DurationFieldType吗?

例如“ years” => DurationFieldType.years();

我正在尝试使用指定的单位数(例如3年或5个月等)增加Date。我已经用字符串值指定了qunantity(整数)和Time单位类型。

我想确保我没有忽略任何事情。我想出的最佳解决方案是使用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);

最佳答案

当前没有进行该查找的方法。

如果愿意,您可以在GitHub上分叉该项目,并添加一个方法来做到这一点-DurationFieldType.of(String)-可以完成的工作比上面的代码少得多。加上一些测试。然后发送请求请求;-)

09-11 19:41