如何在 Kotlin 中将 Epoch 转换为 OffsetDateTime?

How to convert an Epoch to a OffsetDateTime in Kotlin?

当使用 Kotlin 等高级语言调用时,需要提供 postgresql Timestamp with Time Zone 数据类型 OffsetDateTime。 我找不到支持 Epoch 到 OffsetDateTime 转换的直接方法。

fun convertEpochToOffsetDateTime(epochValue: Long): OffsetDateTime {
  return OffsetDateTime.of(LocalDateTime.ofEpochSecond(epochValue, 0, ZoneOffset.UTC), ZoneOffset.UTC)
} 

顺便说一句,我正在使用 Jooq 进行 SQL 使用 Kotlin 的查询。上面的工作就像一个魅力。

我刚刚发现的另一种方式:

fun dateFormatter(epoch: Long): String {
        // epoch = 1557954848
        val date = Date(epoch * 1000L)
        val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS")
        return sdf.format(date)
        // returned value = "2019-05-15 14:14:08.000000"
}

另一种方法是从 Long -> Instant -> OffsetDateTime

OffsetDateTime.ofInstant(Instant.ofEpochMilli(started_at), ZoneOffset.UTC)