ker*_*000 5 java period java-8
我java.time.Period#getDays()用来获得给定时期LocalDates 的天数.
它似乎适用于大多数情况,但整整一个月,我得到零天的时间.
以下测试用例失败(java.lang.AssertionError: expected:<30> but was:<0>):
@Test
public void testOneMonthPeriodDays() {
Period p = Period.between(LocalDate.of(2017, 06, 01), LocalDate.of(2017, 07, 01));
assertEquals(30, p.getDays());
}
Run Code Online (Sandbox Code Playgroud)
我相信这是正确的结果.如果您运行以下测试,您将看到getMonths()返回1.似乎getDays没有获得总天数但获得剩余天数.
@Test
public void testOneMonthPeriodDays() {
Period p = Period.between(LocalDate.of(2017, 06, 01), LocalDate.of(2017, 07, 01));
assertEquals(0, p.getDays());
assertEquals(1, p.getMonths());
}
Run Code Online (Sandbox Code Playgroud)
要获取两个日期之间的总天数,请参阅此问题计算Java 8中两个日期之间的天数
引用该问题中给出的答案:
LocalDate dateBefore;
LocalDate dateAfter;
long daysBetween = DAYS.between(dateBefore, dateAfter);
Run Code Online (Sandbox Code Playgroud)
JavaDoc forjava.time.Period#getDays()说:
返回此期间的天数,可能为负数
我想这是误导,它并没有真正返回总天数。
我现在用
final long daysElapsed = ChronoUnit.DAYS.between(LocalDate.of(2017, 06, 01), LocalDate.of(2017, 07, 01));
Run Code Online (Sandbox Code Playgroud)
它按预期工作。
| 归档时间: |
|
| 查看次数: |
2706 次 |
| 最近记录: |