eir*_*lar 1 java period jodatime
为什么我写的这个测试在jodatime 1.6.2中失败了?这是一个错误吗?
@Test
public void testIfJodaTimePeriodsHandlesPeriodTypesOtherThanMinutesAndHours() {
long twentyDaysInMillis = TimeUnit.MILLISECONDS.convert(20, TimeUnit.DAYS);
Period twoWeeks = new Period(twentyDaysInMillis, PeriodType.weeks());
Assert.assertEquals(2, twoWeeks.getWeeks());
// twoWeeks.getWeeks() actually returns 0!!
}
Run Code Online (Sandbox Code Playgroud)
仅供参考,具有所有PeriodTypes的期间仅填写分钟和小时的字段,即使传递给构造函数的millis超过25小时.这是违反直觉的.
这就是PeriodJodaTime的作用方式.
Period具有精确的字段(小时,分钟,秒,毫秒)和不精确的字段(其他).夏令时可能会影响不精确的字段.也就是说,Period在夏令时边界上24小时可能少于一天或多于一天.
因此,占用毫秒的构造函数仅填充精确字段.要初始化不精确的字段(不考虑帐户中的夏令时),您需要:
Period twoWeeks = new Period(twentyDaysInMillis).normalizedStandard(PeriodType.weeks());
Run Code Online (Sandbox Code Playgroud)
也可以看看:
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |