java - 如何将字符串转换为 DurationFieldType?

标签 java jodatime

您好,有没有办法在 joda 时间内将 String 转换为 DurationFieldType?

例如“years”=> 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);

最佳答案

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

如果您愿意,您可以在 GitHub 上 fork 该项目并添加一个方法来执行此操作 - DurationFieldType.of(String) - 该方法的作用与上面的代码的作用差不多。加上一些测试。然后发送拉取请求;-)

关于java - 如何将字符串转换为 DurationFieldType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10737501/

相关文章:

Java:递归查找列表中的最小元素

java - joda DateTime 解析器错误

java.time.Instant -> java.sql.Timestamp 在 Windows 和 *nix 上的行为不同(与时区相关)

java - Joda-Time 奇怪的时刻

java - 重构。当代码仅相差一行时复制粘贴代码

java - Java中如何在PrintWriter之前使用BufferedReader

java - 如何使用joda time格式化固定毫秒数为hh :mm:ss?

java - 比较 Joda LocalDateTime 和 DateTime 在范围内

java - Java 配置中的 Spring Security XML 配置和 Spring SAML

java - 为什么从 Java 调用我的 Python 程序会失败?