【发布时间】:2022-12-12 04:49:37
【问题描述】:
我想以 "seconds":"nanoseconds" 格式获取 kotlin 中的 EPOCH 时间戳。
注意:请查看已接受的答案以获得正确的解决方案。
编辑:
这是我目前的解决方案,我相信会有更好的方法来实现这一目标,
import java.time.Instant
import java.time.temporal.ChronoUnit;
import kotlin.time.Duration.Companion.seconds
fun main() {
val epochNanoseconds = ChronoUnit.NANOS.between(Instant.EPOCH, Instant.now())
val epochSeconds = epochNanoseconds/1.seconds.inWholeNanoseconds
val remainingFractionOfNanoSeconds = epochNanoseconds%1.seconds.inWholeNanoseconds
println("$epochSeconds:$remainingFractionOfNanoSeconds")
}
示例输出:
1670251213:849754000
另一个例子(来自 cmets):对于 1670251213 秒 50000 纳秒,也称为十进制的 1670251213.00005 秒,我想要 1670251213:50000(意思是 :)。
有什么方法可以直接从 java.time.Instant 或任何其他可用的库中获取秒数和剩余纳秒数以方便地实现这一点?
已接受答案的解决方案:
import java.time.Instant
fun main() {
val time = Instant.now()
println("${time.epochSecond}:${time.nano}")
}
【问题讨论】:
-
“秒和剩余的纳秒”到底是什么意思?您是否想要自 1970-01-01T00:00Z 以来的整秒计数,以及从那时起以小数秒计的纳秒计数?
-
@BasilBourque 是的
-
那为什么你的示例输出的小数部分有 18 位数字?纳秒仅使用 9 位数字。如果您的示例有误,请编辑您的问题以更正它。
-
是的,我不需要太准确。精确到毫秒是可以的,但我需要这种格式来满足某些 json 模式。谢谢你的帮助。