android - Kotlin Firestore 时间戳添加时间

有没有办法将时间添加到 Timestamp 格式化时间而无需多次转换?

val seconds: Long = Timestamp.now().seconds

      val utcDT = LocalDateTime.ofEpochSecond(seconds, 0, ZoneOffset.UTC)
      val withTwo: LocalDateTime = utcDT.plusHours(2)
      val date: Date = Date.from(withTwo.toInstant(ZoneOffset.UTC))
      val new = Timestamp(date)

      Log.d("sirEgghead", "Timestamp: ${Timestamp.now().toDate()}")
      Log.d("sirEgghead", "utcDT: $utcDT")
      Log.d("sirEgghead", "addedTwo: $withTwo")
      Log.d("sirEgghead", "date: ${date.time}")
      Log.d("sirEgghead", "new: ${new.toDate()}")

这是我经历的混乱,只是增加两个小时并在未来两个小时将其恢复为 Timestamp 格式。

Timestamp: Wed May 18 21:53:12 EDT 2022
utcDT: 2022-05-19T01:53:12
addedTwo: 2022-05-19T03:53:12
date: 1652932392000
new: Wed May 18 23:53:12 EDT 2022

我不想使用本地系统时间,以防设备上的时间不正确。数据存储在 Google Firestore 中。

回答1

与其创建 LocalDateTime 实例,不如创建一个 Instant 实例并向其添加 2 小时,使用它的 plus 方法,该方法采用 TemporalUnits 进行添加。

val seconds: Long = Timestamp.now().seconds
val addedSeconds = Instant.ofEpochSecond(seconds).plus(2, ChronoUnit.HOURS).epochSecond 
val newTimeStamp = Timestamp(addedSeconds, 0)

相似文章

最新文章