Pregunta

¿Cómo es que esta prueba no escribí en JodaTime 1.6.2? ¿Es un error?

@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!!
 }

FYI, períodos con todos PeriodTypes sólo llena en los campos para los minutos y horas, incluso si los millis pasados ??al constructor asciende a más de 25 horas. Esto es contrario a la intuición.

¿Fue útil?

Solución

Así es como funciona Period en JodaTime.

Period tiene campos precisas (horas, minutos, segundos, milisegundos) y campos imprecisos (otro). campos imprecisas pueden verse afectados por los cambios de horario. Es decir, Period de 24 horas puede ser menor que un día o más de un día en un horario de verano límite.

Por lo tanto, constructores que toman milisegundos pueblan únicos campos precisos. Para inicializar los campos imprecisos (sin tomar en cuenta el horario de verano) que necesita:

Period twoWeeks = new Period(twentyDaysInMillis).normalizedStandard(PeriodType.weeks()); 

Ver también:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top