Отображение временного интервала в минутах с помощью joda Date Время для отображения в календаре - PullRequest
0 голосов
/ 18 июня 2020

Я хочу отобразить список временного интервала с 15 минут или 30 минут как

как

1:00
1:15
1:30
1:45

или

1:00
1:30
2:00
2:30

приведенный ниже код использует Joda Date time library и показывает время с интервалом в часах. Я просто хочу отображать время с интервалом 15 или 30 минут.

val hourDateTime = DateTime().withDate(2000, 1, 1).withTime(0, 0, 0, 0)
        for (i in 1..23) {
                val formattedHours = Formatter.getHoursWithMinutes(context!!, hourDateTime.withHourOfDay(i))
        }

Formatter.kt

    fun getHoursWithMinutes(context: Context, dateTime: DateTime) = dateTime.toString("h:mm a")

Вместо отображения date (s ) как 1: 00, 2: 00, 3: 00, 4: 00 отображение с интервалом 15 или 30 минут

В настоящее время работает Просмотр который работает с использованием Simple Calendar

Я пробовал другой подход, описанный ниже, но на этот временной интервал меняется, но часы остаются такими же, как

12: 00 -> 12 : 30 -> 12:00 -> 12: 30

   val hourDateTime = DateTime().withDate(2000, 1, 1).withTime(0, 0, 0, 0)
    var interval = 30
    for (i in 1..23) {
        if(i == 1 ) interval = 0
        val formattedHours = Formatter.getHoursWithMinutes(context!!, hourDateTime.withMinuteOfHour(interval) )
        interval += 30
        if(interval == 60) interval = 0
    } 

1 Ответ

0 голосов
/ 18 июня 2020

java .time и ThreeTenABP

Я не могу писать Kotlin. Переведите, пожалуйста, с моего Java.

    Duration interval = Duration.ofMinutes(15);

    LocalTime time = LocalTime.of(1, 0);
    for (int i = 0; i < 10; i++) {
        System.out.println(time);
        time = time.plus(interval);
    }

Вывод:

01:00
01:15
01:30
01:45
02:00
02:15
02:30
02:45
03:00
03:15

Установите интервал Duration.ofMinutes(30), чтобы получить 01:00, 01:30 , et c.

Я использую java .time, современный Java API даты и времени, через бэкпорт, см. ниже. java .time является преемником Joda-Time. Я уверен, что что-то очень похожее на приведенное выше возможно и с Joda-Time, если вы уже используете Joda-Time и не хотите сейчас переходить на java .time.

Вопрос: Нет 't java .time require Android API level 26?

java .time прекрасно работает как на старых, так и на новых устройствах Android. Для этого просто требуется как минимум Java 6 .

  • В Java 8 и новее и на более новых Android устройствах (начиная с уровня API 26) современный API построен -в.
  • В не- Android Java 6 и 7 получить ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. ссылки внизу).
  • На (более ранней) Android используйте Android версию ThreeTen Backport. Это называется ThreeTenABP. И убедитесь, что вы импортировали классы даты и времени из org.threeten.bp с подпакетами.

Ссылки

...