Мне нужна твоя помощь показать оставшиеся минуты вместо часов
15 минут вместо 15:30
Образец: время до начала бронирования: 15 минут
private Notification getNotification(Date countdownEnds) {
DateFormat timeFormat = countdownTimeFormatFactory.getTimeFormat();
String countdownEndsString = timeFormat.format(countdownEnds);
String title = resources.getString(R.string.countdown_notification_title);
String text = resources.getString(R.string.countdown_notification_text, countdownEndsString);
PendingIntent tapIntent =
PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentTitle(title)
.setContentText(text)
.setTicker(title)
.setSmallIcon(R.mipmap.ic_launcher)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(tapIntent)
.setOngoing(true)
.setAutoCancel(false);
return builder.build();
}
public DateFormat getTimeFormat() {
return android.text.format.DateFormat.getTimeFormat(context);
}
код: код
Неужели 15:30 - это время окончания обратного отсчета (или 15:30), а когда время 15:15, то есть осталось 15 минут, вы хотите отобразить «15 минут»? Вы можете получить много вдохновения от Java вычислить время до события с текущего времени. Пожалуйста, ищите больше интересных и полезных вопросов и ответов.
Решение Barebones:
long remainingMillis = countdownEnds.getTime() - System.currentTimeMillis();
long remainingMinutes = TimeUnit.MILLISECONDS.toMinutes(remainingMillis);
String countdownEndsString = String.format("%d minutes", remainingMinutes);
Для более удобного решения используйте java.time
, современный API даты и времени 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 6.
org.threeten.bp
с подпакетами.java.time
.java.time
.java.time
на Java 6 и 7 (ThreeTen для JSR-310).