【问题标题】:How to convert an Epoch to a OffsetDateTime in Kotlin?如何在 Kotlin 中将 Epoch 转换为 OffsetDateTime?
【发布时间】:2019-09-22 07:59:22
【问题描述】:

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

【问题讨论】:

    标签: postgresql kotlin jooq epoch datetimeoffset


    【解决方案1】:
    fun convertEpochToOffsetDateTime(epochValue: Long): OffsetDateTime {
      return OffsetDateTime.of(LocalDateTime.ofEpochSecond(epochValue, 0, ZoneOffset.UTC), ZoneOffset.UTC)
    } 
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这不起作用,请尝试将 1613989887 转换为“2021-02-22T10:31:27Z”。您的代码将产生“1970-01-19T16:19:49.887Z”
      • 请注意 epoc 中秒和毫秒之间的差异。您的值是 epoc 的秒数,在其上附加三个零,您将得到预期的答案。
      【解决方案3】:

      我刚刚找到的另一种方式:

      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"
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-18
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        • 2019-03-09
        • 1970-01-01
        • 2020-06-18
        • 1970-01-01
        相关资源
        最近更新 更多