Решение Barebones:
long remainingMillis = countdownEnds.getTime() - System.currentTimeMillis();
long remainingMinutes = TimeUnit.MILLISECONDS.toMinutes(remainingMillis);
String countdownEndsString = String.format("%d minutes", remainingMinutes);
Для лучшего решения используйте java.time
, современный Java-интерфейс даты и времени, для расчета минут:
long remainingMinutes = ChronoUnit.MINUTES.between(
Instant.now(), DateTimeUtils.toInstant(countdownEnds));
В этом случае также посмотрите, сможете ли вы полностью избавиться от использования Date
, поскольку этот класс давно устарел, а вся функциональность и многое другое находится в java.time
. В последнем фрагменте я использую ThreeTen Backport (см. Пояснения и ссылки ниже) и его класс DateTimeUtils
. Для тех, кто читает и использует Java 8 или более позднюю версию и все еще не избавился от класса Date
, преобразование встроено в этот класс, поэтому оно немного проще:
long remainingMinutes
= ChronoUnit.MINUTES.between(Instant.now(), countdownEnds.toInstant());
Вы также можете захотеть заглянуть в Duration
класс java.time
.
Вопрос: Могу ли я использовать java.time на Android?
Да, java.time
прекрасно работает на старых и новых устройствах Android. Для этого требуется как минимум Java 6 .
- В Java 8 и более поздних версиях и на более новых устройствах Android (от 26 уровня API, как мне сказали) современный API поставляется встроенным.
- В Java 6 и 7 получите ThreeTen Backport, бэкпорт новых классов (ThreeTen для JSR 310; см. Ссылки внизу).
- На (более старых) Android используется версия Android ThreeTen Backport. Это называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из
org.threeten.bp
с подпакетами.
Ссылки