首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bug在jodatime期间?

Bug在jodatime期间?
EN

Stack Overflow用户
提问于 2010-10-27 22:32:28
回答 1查看 756关注 0票数 1

为什么我写的这个测试在jodatime 1.6.2中失败了?这是个bug吗?

代码语言:javascript
复制
@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!!
 }

仅供参考,具有所有PeriodTypes的句号仅填充分钟和小时字段,即使传递给构造函数的毫秒数超过25小时。这是违反直觉的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-27 23:10:27

这就是JodaTime中Period的工作方式。

Period有精确的字段(小时、分钟、秒、毫秒)和不精确的字段(其他)。不精确的字段可能会受到夏令时的影响。也就是说,在夏令时边界上,24小时的Period可能小于一天,也可能大于一天。

因此,耗时几毫秒的构造函数仅填充精确的字段。要初始化不精确的字段(不考虑夏令时),您需要:

代码语言:javascript
复制
Period twoWeeks = new Period(twentyDaysInMillis).normalizedStandard(PeriodType.weeks()); 

另请参阅:

  • Period javadoc
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4034388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档