Как получить разницу между двумя штампами JodaTime LocalTime?

Я использую JodaTime LocalTime для указания времени. Как я могу получить разницу в минутах между двумя временами?

LocalTime startT = new LocalTime(6,30);
LocalTime endT = new LocalTime(12,15);

// LocalTime duration = this.endT.minusMinutes(startT);
// int durationMinutes = duration.getMinutes();

person Klausos Klausos    schedule 13.03.2014    source источник


Ответы (2)


Если вы спросите

Как я могу получить разницу в минутах между двумя временами?

то я бы подумал о следующем более интуитивном решении:

LocalTime startT = new LocalTime(6,30);
LocalTime endT = new LocalTime(12,15);
int minutes = Minutes.minutesBetween(startT, endT).getMinutes(); // 345m = 6h - 15m

Выражение

Period.fieldDifference(startT, endT).getMinutes()

даст только -15, что означает неучет разницы в часах и, следовательно, не преобразование часов в минуты. Если второе выражение действительно то, что вам нужно, то вопрос должен быть примерно таким:

Как я могу получить разницу между минутными частями двух LocalTime-экземпляров?

Обновлено для Java-8:

LocalTime startT = LocalTime.of(6,30);
LocalTime endT = LocalTime.of(12,15);

long minutes = ChronoUnit.MINUTES.between(startT, endT);

System.out.println(minutes); // output: 345

// Answer to a recommendation in a comment:
// Attention JSR-310 has no typesafety regarding units (a bad design choice)
// => UnsupportedTemporalTypeException: Unsupported unit: Minutes
minutes = Duration.between(startT, endT).get(ChronoUnit.MINUTES);
person Meno Hochschild    schedule 13.03.2014
comment
В Java 8: java.time.Duration.between(startLocalTime, endLocalTime).get(ChronoUnit.MINUTES); - person Mickaël Gauvin; 05.02.2015
comment
@MickaëlGauvin Спасибо за ваши усилия, но, пожалуйста, посмотрите мой обновленный ответ относительно вашего комментария. - person Meno Hochschild; 06.02.2015
comment
да, все ChronoUnits не обрабатываются для метода get. Спасибо - person Mickaël Gauvin; 04.03.2015

Если я правильно понял ваш вопрос, следующее должно выполнить эту работу:

Period diff = Period.fieldDifference(startT, endT);
int minutes = diff.getMinutes();  
person Anto    schedule 13.03.2014
comment
Неправильно. См. ответ Мено Хохшильда для исправления, - person Basil Bourque; 25.09.2014