java - 将时间单位添加到 Joda DateTime 对象

标签 java date jodatime

有没有更好的方法将某个时间单位添加到 DateTime 对象?

我想做类似的事情:

TimeUnit unit = TimeUnit.valueOf("days");
DateTime date = new DateTime().add(unit, 20);

这是我当前的实现。

int number = 20;
MutableDateTime now = new MutableDateTime();
String timeUnit = getTimeUnit(); // returns "days", "months", "years"
if (timeUnit.equals("days"))
    now.addDays(number);
else if (timeUnit.equals("months"))
    now.addMonths(number);
else
    now.addYears(number);
return now.toDateTime();

最佳答案

Sotirios Delimanolis 的回答是正确的。 JodaTime 没有类似枚举的概念,因为它是在 JDK5 中引入 Java 泛型和枚举之前开发的。在 Java 8 中,您也可以采用这种方式或类似方式:

String name = "days"; // or months or years
ChronoUnit unit = ChronoUnit.valueOf(name.toUpperCase());
LocalDateTime ldt = LocalDateTime.of(...);
ldt = ldt.plus(number, unit);

或者考虑使用 ZonedDateTime 而不是 LocalDateTime。新方法要优雅得多(是的,JodaTime 变旧了)。

关于java - 将时间单位添加到 Joda DateTime 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952633/

相关文章:

使用tomcat启动spring boot应用程序时出现java.lang.VerifyError

java - Android:[aapt] 没有匹配覆盖文件 - 在 ant build 期间

linux - 在 bash 中使用'rm'- 到 'delete by date' 有什么简单的方法吗?

java - 如果我在日期中将小时、分钟和秒设置为 0,则一天会减少 1..

ruby-on-rails - 如何使用Rails 3中的Capybara从选择框中选择日期?

java - 如何在 Joda Time/Java 8 中列出时区偏移量、时区 ID 和长名称?

java.lang.IllegalArgumentException : Unable to load native library:/data/app-lib/com. gibucsoft.blocklife-1/libblocklife.so

java - @EmbeddedId 和使用 @GenerateValue 自动生成的 id,这种组合不能按需要工作

java - 如果省略时区,Joda Time : Parse string and override time zone,

java - hibernate 4 和 joda-LocalDate 并将其保留为 SQL 日期