如何从小时和分钟中获取秒数

How to get seconds from hours and minutes

提问人:BRDroid 提问时间:8/16/2023 最后编辑:Peter MortensenBRDroid 更新时间:8/25/2023 访问量:50

问:

我正在使用时间选择器撰写,我想从中获得几秒钟,但我得到的是小时分钟(23:50)。

我想将其转换为等于 1692139800000Tuesday, 15 August 2023 23:50:00

现在时间 18:06 离开 17小时 59 分钟 12:05 - 1692183900000 - 2023年 八月 16日 星期三 12:05:00

到目前为止我所拥有的:

fun getMillisFromHrsMins(clock: Clock, timeZoneId: ZoneId) {
    val hours = 12
    val minutes = 5
    val targetDaySeconds = hours * 3600 + minutes * 60 // Seconds from midnight 43500
    val date = LocalDateTime.now(clock)
    val nowDaySeconds = date.toLocalTime().toSecondOfDay() // Seconds at this time 65432

    if (targetDaySeconds >= nowDaySeconds) {

    } else {

        val newPastSeconds = nowToMidnightSeconds(timeZoneId) + targetDaySeconds // 43500
        // Is it possible to get 1692183900000 value with above information please
    }
}
Android Kotlin 日期时间 时区

评论


答:

2赞 Rai Hassan 8/16/2023 #1

您更新的代码:

import java.time.Clock
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.temporal.ChronoUnit

fun getMillisFromHrsMins(clock: Clock, timeZoneId: ZoneId) {
    val hours = 12
    val minutes = 5
    val targetTime = LocalDateTime.now(clock).withHour(hours).withMinute(minutes)
    
    val now = LocalDateTime.now(clock)
    val targetDateTime = if (targetTime.isBefore(now)) {
        targetTime.plusDays(1) // If the target time is in the past, add one day
    } else {
        targetTime
    }
    
    val milliseconds = targetDateTime.atZone(timeZoneId).toInstant().toEpochMilli()
    println(milliseconds)
}

fun main() {
    val clock = Clock.systemDefaultZone()
    val timeZoneId = ZoneId.systemDefault()
    getMillisFromHrsMins(clock, timeZoneId)
}

我以提供的目标时间为例。您可以将 val hours = 12 和 val minutes = 5 替换为实际目标小时数和分钟数 根据您的需要。