Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin-根据手机时间更改地图样式_Kotlin - Fatal编程技术网

Kotlin-根据手机时间更改地图样式

Kotlin-根据手机时间更改地图样式,kotlin,Kotlin,我正在尝试根据一天中的时间更改地图样式。下午6点我想把它改成夜图,早上6点我想把它改成白天图。目前,我认为即使是白天,它也会返回夜图。这是我目前的情况。我试图比较时间,但可能有错误的格式 val startNight = "18:00" val startDay = "6:00" val formatDate = SimpleDateFormat("HH:mm") val parseNight = formatDate.parse(startNight)

我正在尝试根据一天中的时间更改地图样式。下午6点我想把它改成夜图,早上6点我想把它改成白天图。目前,我认为即使是白天,它也会返回夜图。这是我目前的情况。我试图比较时间,但可能有错误的格式

    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))
    }

在Kotlin REPL中运行这些命令可以得到以下答案:

parseNight
Thu Jan 01 18:00:00 GMT 1970

parseDay
Thu Jan 01 06:00:00 GMT 1970
解析时间假定日期为1970年1月1日。您也可以通过手动指定日期来修复当前的实现,但更好的方法是使用新的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,但这并不能举例说明如何处理日期问题。

添加了一个替代实现