Как я могу найти разницу между двумя разами? - PullRequest
0 голосов
/ 21 декабря 2018

Я получаю время с сервера вот так 2018-11-27T09:51:31.832107+00:00, затем разбираю время так OffsetDateTime.parse.Я хочу различить два раза OffsetDateTime.now - OffsetDateTime.parse.

После вычитания я должен показать истекшее время в этой форме: 14 min 12 seconds.Как я могу сделать это правильно, чтобы получить промежуток времени?

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Преобразуйте два раза в миллисекунды, после чего вычтите вторые миллисекунды из первых миллисекунд, а затем отформатируйте результат в устную дату.

0 голосов
/ 21 декабря 2018

Легко, когда вы знаете, как:

// 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.

0 голосов
/ 21 декабря 2018

У вас в Android есть метод, который называется "сравнить", он может помочь вам, см. Документацию здесь:

https://developer.android.com/reference/java/time/OffsetDateTime#compareTo(java.time.OffsetDateTime)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...