Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jodatime期间的Bug?_Java_Jodatime_Period - Fatal编程技术网

Java jodatime期间的Bug?

Java jodatime期间的Bug?,java,jodatime,period,Java,Jodatime,Period,为什么我写的这个测试在jodatime 1.6.2中失败了?是虫子吗 @Test public void testIfJodaTimePeriodsHandlesPeriodTypesOtherThanMinutesAndHours() { long twentyDaysInMillis = TimeUnit.MILLISECONDS.convert(20, TimeUnit.DAYS); Period twoWeeks = new Period(twentyDaysInMillis,

为什么我写的这个测试在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!!
 }

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

这就是在JodaTime中
期间的工作方式

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

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

Period twoWeeks = new Period(twentyDaysInMillis).normalizedStandard(PeriodType.weeks()); 
另请参见:


    • 这就是JodaTime中
      期间的工作方式

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

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

      Period twoWeeks = new Period(twentyDaysInMillis).normalizedStandard(PeriodType.weeks()); 
      
      另请参见:


      我想我的缺点是没有正确阅读文档。谢谢你提供了翔实的答案!我想我的缺点是没有正确阅读文档。谢谢你提供了翔实的答案!后续操作:以下测试的失败是Period.normalizedStandard()文档中描述的一个“功能”:@test public void assertJodaTimeFormatsYears(){Period p=new Period(TimeUnit.millides.convert(380,TimeUnit.DAYS)).normalizedStandard();Assert.assertEquals(1,p.getYears());}建议如何将周溢出到月和年字段中?后续操作:以下测试失败是Period.normalizedStandard()文档中描述的“功能”:@test public void assertJodaTimeFormatsYears(){Period p=new Period(TimeUnit.millides.convert(380,TimeUnit.DAYS)).normalizedStandard();Assert.assertEquals(1,p.getYears());}建议使用什么方法将周溢出到月和年字段中?