如何在 UTC 中获取当前时间,为其添加一些分钟并将其转换为 Kotlin 中的指定格式

问题描述

在这主题上找到了不同的主题,但还没有找到适合我的问题的解决方案。如何获取当前的 UTC 时间,例如添加 60 分钟,并以这种格式显示HH:mm:ss?是否有可能?谢谢

我用它来获取 UTC 时间,但我不知道如何为其添加分钟以及更改显示格式:

val df: DateFormat = DateFormat.getTimeInstance()
df.timeZone = TimeZone.getTimeZone("utc")
val utcTime: String = df.format(Date())

我也尝试过这个功能,但它显示了设备的当前时间:

fun getDate(milliSeconds: Long,dateFormat: String?): String? {
    val formatter = SimpleDateFormat(dateFormat)
    val calendar = Calendar.getInstance()
    calendar.timeInMillis = milliSeconds
    return formatter.format(calendar.time)
}

解决方法

此处使用user-config.jam,可以获取特定偏移量甚至时区的当前时间,然后使用所需模式输出:

java.time

发布前几秒执行的输出是:

import java.time.format.DateTimeFormatter
import java.time.ZoneOffset
import java.time.OffsetDateTime

fun main() {
    val dateTime = getDateTimeFormatted(50,"HH:mm:ss")
    println(dateTime)
}

fun getDateTimeFormatted(minutesToAdd: Long,pattern: String): String {
    // get current time in UTC,no millis needed
    val nowInUtc = OffsetDateTime.now(ZoneOffset.UTC)
    // add some minutes to it
    val someMinutesLater = nowInUtc.plusMinutes(minutesToAdd)
    // return the result in the given pattern
    return someMinutesLater.format(
        DateTimeFormatter.ofPattern(pattern)
    )
}

如果您支持比 26 更旧的 API 版本,您可能会发现 Java 8 功能不直接可用。
你无论如何都可以使用它们,只需阅读this question的答案,最近的方式是API Desugaring

,
var dateformat  = SimpleDateFormat("dd-MM-yyyy HH:mm:ss")
dateformat.timeZone = TimeZone.getTimeZone("UTC")
var date = Date()
date.hours = date.hours +2
date.minutes = date.minutes + 30
Log.e("date",dateformat.format(date))