如何在 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