Kotlin LocalDateTime无毫秒属性,如何获取毫秒值?
从Kotlin LocalDateTime获取毫秒值
LocalDateTime本身没有直接提供millisecond属性,但可以通过以下两种方式获取毫秒相关值:
- 方式1:通过纳秒值换算毫秒
因为1毫秒等于1000000纳秒,直接对纳秒值做整除运算就能得到整数毫秒:
val date = LocalDateTime.parse("2020-03-25T23:58:20.000000647") val millisecond = date.nano / 1_000_000 println(millisecond) // 输出:0
如果需要保留小数部分的毫秒值,用浮点数计算即可:
val millisecondWithDecimal = date.nano / 1_000_000.0 println(millisecondWithDecimal) // 输出:0.647
- 方式2:转换为Instant获取 epoch 毫秒时间戳
如果需要的是从1970-01-01T00:00:00Z开始的毫秒时间戳,需要先给LocalDateTime指定时区,再转换为Instant:
val date = LocalDateTime.parse("2020-03-25T23:58:20.000000647") // 示例使用UTC时区,可根据需求替换为其他时区如"Asia/Shanghai" val instant = date.atZone(ZoneId.of("UTC")).toInstant() val epochMilli = instant.toEpochMilli() println(epochMilli) // 输出对应时间戳
注意:LocalDateTime是无时区的本地时间,转换为时间戳时必须指定时区,否则无法确定对应的UTC基准时间。
内容的提问来源于stack exchange,提问作者MohammadBaqer
相关产品推荐
相关产品推荐

