Kotlin - изменение стилей карты в зависимости от времени телефона - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь изменить стиль карт в зависимости от времени суток.В 18:00 я хочу изменить его на ночную карту, а в 6:00 я хочу изменить его на дневную карту.В настоящее время я думаю, что всегда возвращаются ночные карты, даже если это дневное время.Вот что я имею на данный момент.Я пытаюсь сравнить время, но может иметь неправильный формат.

    val startNight = "18:00"
    val startDay = "6:00"
    val formatDate = SimpleDateFormat("HH:mm")
    val parseNight = formatDate.parse(startNight)
    val parseDay = formatDate.parse(startDay)

    val currentTime = Calendar.getInstance().time;

    if (currentTime.after(parseNight)) {
        mMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.night_style))
    } else if (currentTime.after(parseDay)) {
        mMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.day_style))
    }

1 Ответ

0 голосов
/ 31 мая 2018

Запустив их в REPL Kotlin, вы получите ответ:

parseNight
Thu Jan 01 18:00:00 GMT 1970

parseDay
Thu Jan 01 06:00:00 GMT 1970

В проанализированном времени предполагается дата 1 января 1970 года. Вы можете исправить текущую реализацию, указав даты вручную, нолучший способ сделать это - использовать новые утилиты даты Java 8:

val now = LocalDateTime.now()
// 6 AM today
val morning = now.withHour(6).withMinute(0)
// 6 PM today
val evening = now.withHour(18).withMinute(0)

val isDaytime = now.isBefore(evening) and now.isAfter(morning)

if (isDaytime) { showDayTimeMap() } else { showNightTimeMap() }

Лучше бы использовать LocalTime вместо LocalDateTime, но это не будет примером того, как справляться с проблемами с датой.

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