如何在 Kotlin 中将 Firestore 日期/时间戳转换为日期?

Posted

技术标签:

【中文标题】如何在 Kotlin 中将 Firestore 日期/时间戳转换为日期?【英文标题】:How do I convert a Firestore date/Timestamp to Date in Kotlin? 【发布时间】:2019-09-13 08:51:36 【问题描述】:

我正在使用 firestore,当我从 firestore 获取时间戳时卡住了。我如何将此Timestamp(seconds=1556006384, nanoseconds=994000000) 转换为 Kotlin 中的日期。

我的最低 SDK 是 21,所以下面的代码不起作用

val timestamp = it["time"] as com.google.firebase.Timestamp
val milliseconds = timestamp.seconds * 1000 + timestamp.nanoseconds / 1000000
val tz = ZoneId.of("Asia/Jakarta (UTC+07:00)")
val localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(milliseconds), tz)

谢谢。

【问题讨论】:

docs.oracle.com/javase/8/docs/api/java/time/…, docs.oracle.com/javase/8/docs/api/java/time/…, docs.oracle.com/javase/8/docs/api/java/sql/Date.html#Date-long- 【参考方案1】:

我使用这个类来序列化时间戳

import com.google.firebase.Timestamp

data class Article (
var createdAt: Timestamp? = Timestamp.now(),
var title: String = "",
var image: String = ""
)

【讨论】:

【参考方案2】:

我正在使用此代码:

val timestamp = it["time"] as com.google.firebase.Timestamp
val milliseconds = timestamp.seconds * 1000 + timestamp.nanoseconds / 1000000
val sdf = SimpleDateFormat("MM/dd/yyyy")
val netDate = Date(milliseconds)
val date = sdf.format(netDate).toString()
Log.d("TAG170", date)

【讨论】:

【参考方案3】:

将两个答案放在首位,这对我有用。

val timestamp = data[TIMESTAMP] as com.google.firebase.Timestamp
            val date = timestamp.toDate()

【讨论】:

【参考方案4】:

在 Firestore Timestamp 对象上调用 toDate() 以返回 Date 对象。

【讨论】:

@wesleyfranks 在对象上调用方法应该非常简单。假设您的 Timestamp 对象位于名为“ts”的 val 中:ts.toDate()

以上是关于如何在 Kotlin 中将 Firestore 日期/时间戳转换为日期?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin - 如何执行 onCompleteListener 从 Firestore 获取数据?

如何使用kotlin滑动删除存储在firestore中的recyclerview项目?

如何从 kotlin 中的 firestore 读取映射数据

如何使用 kotlin 数据类获取 Firestore 文档的文档 ID

如何从 Firestore 中读取使用 Kotlin 中的 hashMap 添加的文档?

如何使用 Kotlin 更深入的属性查询 Firestore 集合? [复制]