我正在尝试根据一天中的时间更改地图样式。下午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))
}
答案 0 :(得分:1)
在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,但这并不能说明如何处理日期问题。