Android 在科特林还有多少时间X小时

Android 在科特林还有多少时间X小时,android,datetime,kotlin,Android,Datetime,Kotlin,我想在Kotlin for Android Studio中执行以下操作: 计算上午10:00还剩多少小时和分钟(始终为西班牙语小时)。因此: 如果是早上8:45,它会在下午1:45返回 如果是中午12点,返回22小时0分 我怎样才能做到这一点呢?我是用JVM写的,所以我不确定它是否适用于Android,但我认为算法是正确的: fun timeUntilInMadrid(hour: Int): Duration { val timezone = ZoneId.of("Euro

我想在Kotlin for Android Studio中执行以下操作: 计算上午10:00还剩多少小时和分钟(始终为西班牙语小时)。因此:

  • 如果是早上8:45,它会在下午1:45返回
  • 如果是中午12点,返回22小时0分

我怎样才能做到这一点呢?

我是用JVM写的,所以我不确定它是否适用于Android,但我认为算法是正确的:

fun timeUntilInMadrid(hour: Int): Duration {
    val timezone = ZoneId.of("Europe/Madrid")
    val now = ZonedDateTime.now(timezone).truncatedTo(ChronoUnit.MINUTES)

    val targetTime = LocalTime.of(hour, 0)
    val targetDate =
        if (now.toLocalTime() <= targetTime) now.toLocalDate()
        else now.toLocalDate().plusDays(1)

    val then = ZonedDateTime.of(targetDate, targetTime, timezone)
    return Duration.between(now, then)
}
发布时的输出:

18h40m

到目前为止你试过什么?你能展示一下吗?你知道java.time吗?您是否支持26以下的API版本?在Android Kotlin中测试您的代码,除了仍处于测试阶段的“Android S”中引入的
toHoursPart
toMinutesPart
之外,其他版本都可以正常工作。因此,用一些api 26函数替换为:
Log.d(“main”、“${until.toHours()}h${until.toMinutes()%60}m”)
——该函数的工作时间应少于24小时。
18h40m