使用UTC时区以Kotlin格式输出“from Now”字符串

2w2cym1i  于 2023-02-24  发布在  Kotlin
关注(0)|答案(1)|浏览(153)

我正在尝试编写一个Kotlin函数,它复制moment库中fromNow的行为。
下面的代码:

fun formatDuration(dateTime: String): String {
    try {
        val parsedDateTime = Instant.parse(dateTime)
        val prettyTime = PrettyTime()
        prettyTime.reference = Instant.now().atZone(ZoneOffset.UTC).toInstant()
        return prettyTime.format(parsedDateTime)
    } catch (e: DateTimeParseException) {
        e.printStackTrace()
        return "Invalid date/time format"
    }
}

问题是,当设备时间为9:44,输入字符串为2023-02-19T11:48:09.958Z,当前UTC时间为15:19时,它将输出2 hours from now,即使它应该像moment函数那样输出3 hours ago,因为时间戳是UTC。
如何修复此问题,以便在计算差值时始终考虑UTC时间而不是本地时间?

11dmarpk

11dmarpk1#

您是否尝试过更改:
发件人:

val parsedDateTime = Instant.parse(dateTime)

致:

val parsedDateTime = Instant.parse(dateTime).atZone(ZoneOffset.UTC).toInstant()

相关问题