java - Jodatime 计算 2 个日期范围(几乎是一年)之间的期间的错误

标签 java date jodatime

<分区>

我刚开始使用 Joda Time,一周以来我对结果很满意。我正在尝试获取格式为“yyyy-MM-dd HH”的两个日期之间的时间范围。

直到我遇到一个我正在写的测试用例,在我看来结果是错误的:

2014-02-05 05 - 2016-02-04 05

Joda 结果:

年:1 月:11 天:2 小时:0

预期结果:

年:1 月:11 天:30 小时:0

我只需要再过 1 天就可以达到整整 2 年....

我不是 QA,但对我来说这肯定是一个错误......我也和我们的 QA 谈过这个问题,她同意了。

我想在 Github 中提出一个错误,但它指出我首先要使用 Stackoverflow.. 任何澄清将不胜感激。

String hourFormat = "yyyy-MM-dd HH";
String startTime = "2014-02-05 05";
String endTime   = "2016-02-04 05";
DateTimeFormatter hourFormatter = DateTimeFormat.forPattern(hourFormat);
DateTime start = hourFormatter.parseDateTime(startTime);
DateTime end   = hourFormatter.parseDateTime(endTime  );
Interval interval = new Interval(start, end);
Period period = interval.toPeriod();
System.out.println(String.format(
  "Years: %d  Months: %d  Days: %d  Hours: %d",
  period.getYears(), period.getMonths(), period.getDays(), period.getHours()
));

最佳答案

更改以下代码行

Interval interval =   new Interval(start, end);
Period period = interval.toPeriod();

Period period = new Period(start, end, PeriodType.yearMonthDay());

关于java - Jodatime 计算 2 个日期范围(几乎是一年)之间的期间的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39090790/

相关文章:

java - 无法创建记录器 Tomcat 错误

Java:序列化 String[] 数组以存储在 MySQL 数据库中?

java - 在页脚中插入带有文本的页码aspose word java

mysql - 如果当前日期小于或等于 7 月,SQL 选择日期 1 月到 7 月

php - MySQL 从特定周/月的最后 2 天选择条目

java-8 - java.time 中是否有类与 Joda-Time Interval 相当?

java - 测试 ehcache

c - 想要使用 struct tm 执行日期/时间值操作

java - Joda Api 处理 Time Zone for isBefore Not isAfter Now 比较

java - 使用 Joda Time 打印时舍入毫秒数