Я столкнулся с проблемой при использовании JodaTime.Вот мой метод:
public double calculateTimeDifference(String startedAt) {
DateTime cet = new DateTime(DateTimeZone.forID("CET"));
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss'Z'");
DateTime convertedStartedAt = formatter.parseDateTime(startedAt);
Period period = new Interval(cet, convertedStartedAt).toPeriod();
int minutes = period.getMinutes();
return minutes;
}
И у меня есть тест, который добавляет 30 минут к времени:
@Test
public void testTimeDifference() {
DateTime testtime = new DateTime(DateTimeZone.forID("CET")).plusHours(2);
testtime = testtime.plusMinutes(30);
// Format for input
DateTimeFormatter cet = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
// Parsing the date
DateTime requestedFormat = cet.parseDateTime(testtime.toString());
// Format for output
DateTimeFormatter requestedTime = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss'Z'");
double time = carService.calculateTimeDifference(requestedTime.print(requestedFormat));
assertEquals(30, time, 0.0);
}
Но когда я запускаю это, вывод:
Expected : 30.0
Actual : 29.0