Легко, когда вы знаете, как:
// Parse input.
String timeFromServer = "2018-11-27T09:51:31.832107+00:00";
OffsetDateTime odt = OffsetDateTime.parse(timeFromServer);
// Capture the current moment.
OffsetDateTime now = OffsetDateTime.now(ZoneOffset.UTC)
// Get the difference
Duration difference = Duration.between(odt,now);
// Extract details: Convert to minutes and seconds
long minutes = difference.toMinutes();
difference = difference.minusMinutes(minutes);
long seconds = difference.getSeconds();
// Format into string in desired form
String formattedDiff = String.format("%d min %d seconds", minutes, seconds);
System.out.println(formattedDiff);
При запуске сейчас мы получаем большое количество минут, так как ваш пример строки с прошлого месяца.
34613 мин 38секунд
Единственная сложная часть - это разделение минут и секунд от объекта Duration
.Сначала я вынимаю минуты, затем вычитаю их, чтобы остались только секунды (и меньше).В Java 9 Duration
улучшена поддержка получения отдельных единиц времени (см. to…Part
методы), но я полагаю, вы еще не можете использовать это на Android.
Когда это только для вычисления разницы, не имеет значения, какой часовой пояс или смещение вы передаете OffsetDateTime.now
.