首页 > 解决方案 > 如何在 kotlin hashmap 中添加双精度类型?

问题描述

我有代码:

val value: HashMap<String, Any> = hashMapOf()
value["sender_id"] = userId!!
value["name"] = firstname!!
value["text"] = et_search_box.text.toString()
value["avatar"] = avatar!!
value["date"] = ServerValue.TIMESTAMP.toDouble()

如何将日期类型加倍?

示例代码

标签: javaandroidkotlin

解决方案


Firebase Timestamp有两个特定的函数getSeconds()getNanoseconds()来解析任何其他单位的时间。

例如,以秒为单位获得高达 9 位精度(纳秒精度)的时间

val timestampInSeconds: Double = ServerValue.TIMESTAMP.run {
    getSeconds().toDouble + getNanoseconds.toDouble() / 1_000_000_000
}

这是非常准确的,但是时间戳通常以毫秒表示,如果您愿意,可以轻松地将其反序列化为 Date 对象,例如java.util.Date使用毫秒值来评估日期对象。

要获得标准毫秒值:

val stdTimestampMillis: Long = ServerValue.TIMESTAMP.toDate().getTime()

// to deserialize it to Timestamp/Date object later
val date: Date = Date(stdTimestampMillis)
val timestamp: Timestamp = Timestamp(date)

推荐阅读